파이썬 class 소스를 보면 self 이라는 놈이 나옵니다
self에 대해서 알려드리겠습니다~~~ ㅎㅎ
자 그럼 파이썬 class 에 대해서 먼저 말씀드리겠습니다
파이썬에서는 class 에 대한 객체를 생성할때에는 c++ 과 다르게 생성합니다 .
C++에서는
class lite
{
int Data;
pulic:
void lite() {}
void ~lite() {}
void set(Data);
void get();
};
lite test;
이런식으로 선언하자나요 파이썬은 좀 다릅니다.
class lite:
def __init__(self):
pass;
def __del__(self):
pass;
def set(self,Data):
self.Data = Data;
def get(self,Data):
print("instance Data : ", self.Data);
test = lite();
좀 다르죠? ㅎㅎㅎㅎ
파이썬에서 self를 쓰면 인스턴스 공간을 쓴다는 말입니다 .
자 그럼 class 공간에 있는 변수를 알고 싶거나 저장 하고 싶다면 어떻게 해야 할까요?
인스턴스를 할당하고 __class__를 이용하여 사용하면 클래스 안에 데이터 공간을 바꿀수 있습니다.
예제를 보고 이해해 보세요 ^^
class Test:
data = "Default";
i2 = Test();
i1 = Test();
print("i2 data:",i2.data);
print("i1 data:",i1.data);
print("i1 data:",i1.data);
i1.__class__.data = "song";
print("i2 data :",i2.data);
print("i1 data :",i1.data);
print("i1 data :",i1.data);
i1.data = 'eunnam';
print("i2 data:",i2.data);
print("i1 data:",i1.data);
print("i1 data:",i1.data);
출력문 :
i2 data: Default
i1 data: Default
i2 data : song
i1 data : song
i2 data: song
i1 data: eunnam
다 이해 하셨나요? ^^
또 한가지 소스를 보여드릴께요 ~~
str = "Not Class Member";
class GString:
str="";
def Set(self,msg):
self.str = msg;
def Print(self):
print(self.str);
def Print1(self):
print(str)
str="";
def Set(self,msg):
self.str = msg;
def Print(self):
print(self.str);
def Print1(self):
print(str)
test = GString();
test.Print();
test.Print1();
출력문 :
Not Class Member
자 그럼 설명해 드리겠습니다. 파이썬의 인스턴스 기본적으로 class를 가르키고 있습니다.
그래서 인스턴스 test의 print 같은 경우에는 자기자신의 공간의 str를 함으로서 빈공간이 출력되고
print1 같은경우에는 클래스 안의 str를 가르킴으로서 Not Class Member 가 출력되는것입니다.
test.Print1();
출력문 :
Not Class Member
자 그럼 설명해 드리겠습니다. 파이썬의 인스턴스 기본적으로 class를 가르키고 있습니다.
그래서 인스턴스 test의 print 같은 경우에는 자기자신의 공간의 str를 함으로서 빈공간이 출력되고
print1 같은경우에는 클래스 안의 str를 가르킴으로서 Not Class Member 가 출력되는것입니다.
'Soft Ware > python' 카테고리의 다른 글
class 중 정적메소드로 등록 및 클래스메소드로 등록 하는방법 (0) | 2012.03.12 |
---|---|
class 의 인스턴스와 클래스 간의 이해(2) (0) | 2012.03.12 |
enumerate 에 대해서 ~~~ (0) | 2012.03.10 |
제너레이터 에 대해서 !! ! (0) | 2012.03.10 |
이터레이터 (0) | 2012.03.10 |