■ 인스턴스 (Instance) : 클래스에 의해서 생성된 객체 (Object)
■ 클래스 (Class) : 함수나 변수들을 모아놓은 집합체
■ 클래스의 구조
<클래스 변수 1>
<클래스 변수 2>
...
def 클래스함수1(self [, 인수1, 인수2, ...]):
<수행할 문장 1>
<수행할 문장 2>
...
def 클래스함수2(self [, 인수1, 인수2, ...]):
<수행할 문장 1>
<수행할 문장 2>
...
...
※ 'self' : 파이썬 만의 독특한 변수로 클래스 내에서 정의되는 함수는 무조건 첫번째 인자로 self를 사용하여야 한다.
※ 클래스 내에 정의된 함수를 메소드(method)라고 한다.
■ 클래스 내의 함수 연산자 (X, Y는 인스턴스): 초기화 및 오버로딩(Overloading) 기법에 사용되는 함수 연산자
__init__ : 생성자 (Instructor), 인스턴스가 만들어 질 때 호출, 초기치를 설정할 때 사용
__del__ : 소멸자 (Destructor), 인스턴스가 사라질 때 호출
__add__ : 연산자 '+' → X + Y
__sub__ : 연산자 '-' → X - Y
__or__ : 연산자 '|' → X|Y
__repr__ : print → print X
__call__ : 함수호출 X() 하면 호출
__getatrr__ : 자격부여 → X.메소드
__getitem__ : 인덱싱 → X[i]
__setitem__ : 인덱싱 치환 → X[key] = value
__getslice__ : 슬라이싱 → X[i:j]
__cmp__ : 비교 → X > Y
☞ 클래스 예제 1
# 클래스 선언
class Guest:
category = 'Guest' # 클래스 내 변수 설정
def __init__(self, num): # 생성자 / 객체 생성시 호출되며, GuestID 필요로 한다
self.GuestID = num
def __del__(self): # 소멸자 / 객체 소멸시 호출
print "Guest out"
def printID(self): # 메소드 / 인스턴스의 GuestID를 출력하는 메소드
print self.GuestID
# Guest 클래스의 인스턴스 생성, 값 출력, 메소드 호출
A = Guest(3) # 인스턴스 생성 (GuestID = 3으로 설정)
print A.category # 인스턴스 내 변수 category 값 출력
print A.GuestID # 인스턴스의 GuestID 값 출력
A.printID() # 인스턴스의 printID() 메소드 호출
실행 결과:
Guest
3
3
Guest out
☞ 클래스 생성 예제 2 (상속)
class Human: # Human 클래스 / 부모클래스
age = 0
def __init__(self):
self.name = 'John Doe'
def __del__(self):
print 'Human Out'
def setName(self, name):
self.name = name
def setAge(self, age):
self.age = age
def printHuman(self):
print self.name
print self.age
print '\n'
class Man(Human): # Man 클래스 / 자식클래스
sex = 'Male'
def __init__(self):
self.name = 'John Doe'
def __del__(self):
print 'Man out'
def printHuman(self):
print self.name
print self.age
print self.sex
print '\n'
class Woman(Human): # Woman 클래스 / 자식클래스
sex = 'Female'
def __init__(self):
self.name = 'Jane Doe'
def __del__(self):
print 'Woman out'
def printHuman(self):
print self.name
print self.age
print self.sex
print '\n'
A = Human()
A.printHuman()
A.setName('Alpha')
A.setAge(10)
A.printHuman()
A.name = 'Alpha2'
A.age = 100
A.printHuman()
B = Man()
B.printHuman()
B.setName('Bravo')
B.setAge(15)
B.printHuman()
C = Woman()
C.printHuman()
C.setName('Charlie')
C.setAge(20)
C.printHuman()
실행결과:
John Doe
0
Alpha
10
Alpha2
100
John Doe
0
Male
Bravo
15
Male
Jane Doe
0
Female
Delta
20
Female
Human Out
Woman Out
Man Out
'PROGRAMMING > Python' 카테고리의 다른 글
[스크랩]NetBeans 7 + Python 설정 (0) | 2011.06.30 |
---|---|
[Python] 모듈 (Modules) (0) | 2011.06.16 |
[Python] 문자열 관련 함수 (0) | 2011.06.10 |
Python 설치 및 EditPlus 3 설정 (2) | 2011.06.02 |
파이썬 (Python) 최고의 강좌 사이트 (2) | 2011.05.24 |
댓글