인스턴스(instance) 메서드
•
클래스에 아무 데코레이터(decorator) 없이 메서드를 선언하면 해당 메서드는 인스턴스 메서드로 취급
•
첫 번째 매개 변수로 클래스의 인스턴스가 넘어옴
◦
첫 번째 매개 변수는 관행적으로 self라고 한다.
•
인스턴수 메서드는 이 self를 통해
◦
인스턴스 속성(attribute)에 접근하거나 다른 인스턴스 메서드를 호출 가능
◦
클래스 속성에 접근하거나 클래스 메서드를 호출 가능
class Counter:
def __init__(self, value = 0): #인스턴스 메서드
self.value = value
def increment(self, delta = 1):
self.value += delta
def decrement(self, delta = 1):
self.value -= delta
>>> counter = Counter()
>>> counter.value
0
>>> counter.increment(3)
>>> counter.value
3
>>> counter.decrement(2)
>>> counter.value
1
>>> counter.increment()
>>> counter.value
2
Python
복사
정적 메소드 선언
•
같은 점
◦
둘 다 인스턴스(__init__)를 만들지 않아도 class 메서드를 바로 실행할 수 있다.
#staticmethod
class hello:
num = 10
@staticmethod
def calc(x):
return x + 10
print(hello.calc(10))
#결과
20
Python
복사
#classmethod
class hello:
num = 10
@classmethod
def calc(cls, x):
return x + 10
print(hello.calc(10))
#결과
20
Python
복사
@staticmethod
@classmethod
•
staticmethod에서 cls(해당 클래스를 지침) 인자가 추가된 것