본문 바로가기
PROGRAMMING/Python

[Python] 클래스 (Class)

by BLADEBONE 2011. 6. 14.

■ 인스턴스 (Instance) : 클래스에 의해서 생성된 객체 (Object)

■ 클래스 (Class) : 함수나 변수들을 모아놓은 집합체

■ 클래스의 구조

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

댓글