함수 호출시 self는 왜 붙이나요?

조회수 2414회
def sum(self):
        resurt = 0
        for num in self.numberlist:

               resurt += num
        return resurt

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

total = self.sum() 에서 왜 self가 들어가나요?

2 답변

  • 파이썬은 언어적으로 볼 때 불완전한 것들 투성입니다.

    객체지향은 프로토타입 수준이고 캡슐화(네임 맹글링 수준지원), 상수같은 필수적인 특성도 없습니다.

    self 도 그중하나라고 볼 수 있습니다.

    기본적으로 객체지향 언어라면 this 포인터를 가지고 있습니다. 다만 그것이 묵시적으로 숨겨져 있는 것이고 모든 메소드 첫차리에 this가 전달됩니다.

    그런데 파이썬은 그걸 명시적으로 표현하게 한 겁니다. 파이썬에서는 self 가 없으면 클래스 메소드가 됩니다. 정리하면 해당객체의 변수등에 접근하려면 self가 있어야 합니다.

    즉 인스턴스 메소드를 만든다하면 self 를 넣어야된다 하고 외우세요.

  • 한 언어에 익숙해서 다른 언어의 규칙이 이상하게 보이는 것입니다.

    파이썬같은 언어에 익숙해지면, 함수 호출 할 때 소속없이 호출하는 것이 더 불안해지기도 합니다. 오히려, 함수의 소속을 명시적으로 해두면 가독성이 높아지지요.

    이런 것이 익숙해지면, C++ 같은 언어에서도 안써도 되는 this를 일부러 사용하여 this->sum() 으로 표시하는 것을 규약으로 두는 팀도 있습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)