파이썬 초보적인 함수 질문 드려봅니다. (self 관련해서)

조회수 2103회

현재 파이썬3 공부중인 학생이라서 기초적인 질문 하나 드려봅니다.

아래 코드 중 왜 sum과 avg 메소드에서 파라미터로 self하나만 받아도 실행이 되는것인지 이해가 되지 않습니다. 파이썬에서는 첫번재 파라미터로 self를 명시적으로 구현해야하는 것으로 알고 있는데 self 다음에 실질적인 파라미터가 또 대입되어야 하지 않나요?

쉬운 부분을 혼자만 헷갈려 하는 것 같은데 답변 주시면 정말 감사하겠습니다!!

class Calculator:
    def __init__(self, numberlist):
        self.numberlist = numberlist

    def sum(self):
        result = 0
        for num in self.numberlist:
            result += num
        return result

    def avg(self):
        total = self.sum()
        return total / len(self.numberlist)

cal1 = Calculator([1,2,3,4,5])
print(cal1.sum())
print(cal1.avg())
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 우리가 알고 있는 객체지향의 언어들은 첫번째 파라미터로 내 자신 참조가 들어갑니다.

    c++의 경우 ecx 레지스터를 이용하고 자바의 경우 byte코드를 보면 this를 스택에 넣습니다. 파이썬의 경우 그것을 명시적으로 한것이죠. 예를들어

    Calculator.avg(Calculator([1, 2, 3]))
    

    와 같이 호출 할 수 있습니다.

    즉 self 라는건 나 자신이라는 의미입니다. 메소드내에서도 프로퍼티등을 참조해야 하니까요. self만 있는 메소드는 그냥 입력이 없는 형태의 메소드입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)