Blog | Tag | Local | Media | Guest | Login  RSS
python class
class 클래스이름[상속클래스명[, 상속클래스명...]]:
    <클래스 변수 1>
    <클래스 변수 2>
    ...
    def 클래스함수1(self[, 인수1, 인수2,,,]):
        <수행할 문장 1>
        <수행할 문장 2>
        ...
    def 클래스함수2(self[, 인수1, 인수2,,,]):
        <수행할 문장1>
        <수행할 문장2>
        ...
    ...
다중 상속 가능.

텅 빈 클래스
class CEmpty:
    pass

CEmpty 클래스의 인스턴스
empty = CEmpty()

클래스
>>> class CNotEmpty:
...     literal1 = "Life is short."
...     literal2 = "You need a Python"
...     def power(self, a, b):
...         result = a ** b
...         print "%s의 %s 승은 %s 입니다." % (a, b, result)
...
>>> ne = CNotEmpty()
>>> ne.power(2,10)
2의 10승은 1024입니다.
>>> print ne.literal1
Life is short

self가 C++의 this와 같음. 자신의 레퍼런스 변수.

클래스 생성자와 파괴자 __init__, __del__
>>> class CNotEmpty:
...     literal1 = "Life is short."
...     literal2 = "You need a Python"
...     def __init__(self, val):
...         self.initval = val
...     def power(self, a, b):
...         result = a ** b
...         print "%s의 %s 승은 %s 입니다." % (a, b, result)
...     def __del__(self):
...         print '객체 %s 파괴됨' % (self)
...
>>> ne = CNotEmpty(10)
>>> print ne.initval
10
>>> del ne
객체 <__main__.ne instance at 0x02827E90> 파괴됨
>>>
생성자와 파괴자를 명시적으로 쓰지 않으면 아무 일도 하지 않는 디폴트 생성자, 디폴트 파괴자가 자동으로 호출됨

클래스 멤버의 접근
>>> class c:
...     li1 = "ab"
...     def __init__(self, i):
...         self.i = i
...
>>> ic = c("abc")
>>> c.li1
'ab'
>>> c.i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class c has no attribute 'i'
>>> ic.li1
'ab'
>>> ic.i
'abc'
>>> del ic
>>> ic.i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'ic' is not defined
>>>

연산자 오버로딩도 되나 + 연산자의 함수이름은 __add__와 같이 연산자의 함수 이름이 특이하므로 알아둘 필요가 있음.

연산자
 __init__
 생성자
 __del__  소멸자
 __add__  a + b
 __or__
 a | b
 __repr__  레퍼런스 print a
 __call__  함수호출 a()
 __getattr__  속성 참조 .연산 a.blah
 __getitem__  인덱싱 a[i]
 __setitem__  인덱스 치환 a[i] = v
 __getslice__  슬라이싱 a[:]
 __cmp__  비교 a > b
파이썬 라이브러리는 요기에 http://www.python.org/doc/current/download.html

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍' 카테고리의 다른 글

우월한 나눔 폰트  (0) 2009.12.29
python __name__  (0) 2009.10.06
python class  (0) 2009.10.06
python system arguments  (0) 2009.10.06
python file read/write  (0) 2009.10.06
python function  (0) 2009.09.22

 태그 : 

티스토리 툴바