Programming/Python

class member, instance member

scii 2013. 5. 2. 00:27


멤버에는 두 가지가 있다. 클래스 멤버와 인스턴스 멤버이다.


클래스 멤버는 클래스 이름 공간에 생성된다.

클래스 멤버는 모든 인스턴스 객체들에 의해서 공유될 수 있다.

인스턴스 멤버는 인스턴스 객체 이름 공간에 생성된다.

인스턴스 멤버는 각각의 인스턴스 객체 내에서만 참조된다.



클래스 멤버는 메쏘드 바깥에 정의된다. 

인스턴스 멤버는 메소드 내부에서 self를 이용하여 정의된다.

클래스 내부에서 멤버들을 참조할 때는 self.c_mem, self.i_mem 과 같이 한다.


외부에서 참조할 때...

클래스 멤버는 클래스이름.멤버이름 형식으로 호출하며, 인스턴스 멤버는 인스턴스이름.멤버이름 형식으로 호출한다.

클래스 멤버는 인스턴스이름.멤버이름 형식으로 호출하는 것이 가능하다.

단! 인스턴스 이름 공간에 같은 이름의 멤버가 없어야 한다. 인스턴스 이름 공간의 멤버를 우선적으로 처리하기 때문이다.


검색 순서

우선적으로 인스턴스 멤버를 참조한다.

만일, 인스턴스 멤버가 존재하지 않으면 클래스 멤버를 참조한다.


클래스 멤버는 모든 클래스 인스턴스가 공유하는 멤버이고, 

인스턴스 멤버는 각각의 클래스 인스턴스가 별도로 가지고 있는 멤버이다. 즉, 각 인스턴스의 특성을 나타낸다고 할 수 있다.