파이선 생성자와 파괴자
파이선에 초기화는 class에 초기화 설정을 하여 초기화를 꾀할 수 있다.
#bookstore.py
class Book:
def setData(self,title, price, author):
self.title = title
self.price = price
self.author = author
def printData(self):
print '제목 : ', self.title
print '가격 : ', self.price
print '저자 : ', self.author
def __init__(self, title, price, author):
self.setData(title,price,author)
print 'a new Books for now'
기초적인 크랠스의 (1)__init__ 하는 부분이 초기화 부분이라 할 수 있다.
이와함께 생성자가 있다면, 소멸자도 반드시 존재 하듯이 (2)__del__() 메소드와 반대로 객체가 없어질 때 호출되는 메소드가 필요하다.
이런 것을 '소멸자(destructor)'라고 하는데 파이썬에서는 __del__() 메소드가 소멸자의 역할을 한다. (3)__repr__() 메소드(프린팅)
이번에는 printData()와 같은 메소드를 호출하는 대신에 파이썬의 기본문인 print문을 사용해서 책 제목을 출력해 보도록 하겠다. 이런 일을 가능하게 해주는 것은 바로 `__repr__()메소드이다.
def __repr__(self):
return self.title
두 도형의 넓이를 더하는 __add__() 메소드를 만들어 보면은 두 객체를 self와 other를 인자로 받아서 그 둘의 넓이를 더한 값으 돌려주는 이을 알아보면은
#shape.py
class Shape:
area = 0
def __add__(self, other):
return self.area + other.area
>>> import shape
>>> a = shape.Shape()
>>> a.area = 120
>>> b = shape.Shape()
>>> b.area = 1
>>> a + b
121
이와 같이 특별한 메소드를 사용해서 연산자가 하는 일을 정의하는 것을 '연산자 중복(overload)' 이라고 부릅니다. 연산자 중복을 이용하면 사용자가 직접 만든 클래스의 객체에 대해서도 연산자를 사용할 수 있다.
(5)__cmp__() 메소드 (비교)
비교 연산자 ( <, >, == )를 쓸 수 있도록 해 주는 메소드를 살펴보면서 정리를 하도록 하겠습니다.
Shape 클래스에 아래와 같이 __cmp__() 메소드를 추가해 준다.
파일을 읽어들어 라인별루 찍어 내기
반복자를 이용하여 파일을 읽어들여 프린트 문장으로 찍어 내는 문장을 흉내내보자
f = open('news.txt')
f = iter(f)
#i.next()
for m in f:
print m
반복자 클래스 직접 만들기
1, 2, 3, 4, .. 와 같이 0보다 큰 정수를 자연수라고 하지요. 자연수는 무한히 큰 집합입니다. 리스트를 이용해서 무한히 큰 자연수를 집합을 만들 수 있을까요? 이렇게 하면?
이 글은 스프링노트에서 작성되었습니다.
'프로그램언어 > python' 카테고리의 다른 글
[Python] Modules 사용에 대한 용어 정의 (0) | 2010.05.05 |
---|---|
[Python] Class Operator Overloading (0) | 2010.05.02 |
[Python] Why You Will Care: Dictionary Interfaces (0) | 2010.05.01 |
[Python] Built-in Objects Preview (0) | 2010.05.01 |
[Python] Environment Variables Setting (0) | 2010.05.01 |