self 는 C++나 JAVA의 this와 유사한 기능을 한다. 즉, 자신의 인스턴스 객체를 가리키는 레퍼런스이다. 

모든 메쏘드는 반드시 이 self를 첫 인수로 받아야 한다. 이 self를 이용하여 클래스 인스턴스의 이름 공간에 접근해야 하기 때문이다.


c = myclass()

c.set('asdf')

c.put()

위의 코드는 아래의 코드와 동일하다.

myclass.set(c, 'asdf')

myclass.put(c)


self는 실제로 인스턴스 c의 레퍼런스로 자동적으로 대치된다.


이와 같이 클래스 객체를 이용하여 메쏘드를 호출하는 것을 "Unbaound Class Method" 호출 이라고 한다. 

인스턴스를 통하여 자동으로 self인수를 전달하는 방식을 "Bound Instance Method" 호출이라고 한다.



클래스 내부에서의 메쏘드 호출

클래스 내부에서 내부의 메쏘드를 호출할 때는 멤버를 참조하는 것과 같은 방식으로 self를 이용해야 한다.


만일 self를 이용하지 않고 그냥 method만 호출했다면.....

클래스 내에서가 아니라, 클래스 외부, 즉, 모듈에서 이 함수를 찾는다. 

클래스의 멤버나 메쏘드를 참조하려면 언제나 self를 이용하는 것을 잊지 말아야 한다.



'Programming > Python' 카테고리의 다른 글

class member, instance member  (0) 2013.05.02
정적 메소드, 클래스 메소드, 장식자  (0) 2013.05.01
class  (0) 2013.05.01
문자열 이름으로 속성 값 참조  (0) 2013.05.01
모듈의 실행 ( __name__ == '__main__' )  (0) 2013.05.01
Posted by scii
: