Python 클래스
class FourCal:
def __init__(self, first, second): #생성자
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
>>> a = Fourcal(3, 4)
>>> a.first # 3
>>> a.second # 4
>>> a.add() # 7
● 클래스 변수와 인스턴스 변수
class Account:
num_accounts = 0 # 클래스 변수
def __init__(self, name): # 생성자
self.name = name # 인스턴스 변수
Account.num_accounts += 1
def __del__(self): # 소멸자
Account.num_accounts -= 1
>>> kim = Account('SamKim')
>>> lee = Account('CoLee')
>>> kim.name # SamKim
>>> lee.name # CoLee
>>> Account.new_accounts # 2
>>> del kim
>>> Account.new_accounts # 1
● 클래스 메서드와 인스턴스 메서드
class SelfTest:
def function1(): # 클래스 메서드
print('class method called!!')
def function2(self): # 인스턴스 메서드
print('instance method called!!')
>>> self_test = SelfTest()
>>> self_test.function1() # X
>>> SelfTest.function1() # O (클래스 메서드)
>>> self_test.function2() # O (인스턴스 메서드)
↕
>>> SelfTest.function2(self_test)
→ 메서드의 첫 매개변수에 각 인스턴스를 나타내는 self가 있으면 인스턴스 메서드, 없으면 클래스 메서드
class SelfTest:
@classmethod
def function1(cls): # 클래스 메서드
print('class method called!!')
→ decorator를 사용하여 클래스 메서드를 만드는게 일반적
→ 첫 매개변수로self와 마찬가지로 cls를 주며 각 클래스를 나타냄
매직 메서드(스페셜 메서드)
●__init__: 생성자
●__del__: 소멸자
●__dict__: 객체의 속성값 출력
class UserInfo():
def __init__(self, name):
self.name = name
>>> user1 = UserInfo('minsu')
>>> print(user1.__dict__) # {'name' : 'minsu'}
cf) dir(객체) : 파이썬이 내장한 속성까지 볼수있음 (속성만 보여주고 값은 보여주지 않음)
● __doc__ : 클래스 주석(설명) 출력
class UserInfo():
"""
class comment
"""
>>> user1 = UserInfo()
>>> print(user1.__doc__) # class comment
● __str__ : 문자열 출력 (=toString() in Java)