SOCO
정적메서드, 클래스메서드, 데코레이터 본문
1. 기본형 : 클래스, 메서드
클래스에서 메서드를 정의할 때 1번째 매개변수는 self매개변수임(해당 객체)
메서드를 호출할 때 주로 객체를 만들어서 객체를 통해 호출했음(방법1)
class Person :
def say_hello(self) : #self는 객체자리임
print("hello")
a = Person() #객체생성
a.say_hello() #함수호출 방법1
Person.say_hello(a) #함수호출 방법2
2. 정적메서드
메서드 위에 @staticmethod
정적 메서드는 매개변수 self를 지정하지 않음
class Calc :
@staticmethod
def add(a,b) :
print(a+b)
@staticmethod
del mul(a,b) :
print(a*b)
Calc.add(10,20)
Calc.mul(10,20)
3. 클래스매서드
메서드 위에 @classmethod
클래스 메서드는 첫 번째 매개변수로 cls를 지정해야함
class Person :
count = 0
def __init__(self) :
Person.count +=1
@classmethod
def print_count(cls) :
print("{}명 생성되었습니다." .format(cls.count))
james = Person()
maria = Person()
Person.print_count() #별도의 객체 없이 호출 가능
클래스 매서드는 주로 클래스변수와 관련된 작업을 처리할 때 쓰는 것 같다
클래스 매서드는 별도의 객체를 생성하지 않고 호출할 수 있다
때문에 개별 객체의 고유한 값이 아니라 클래스의 객체 전체가 공유하는 변수인 클래스 변수를 처리할 때 용이한 것 같다.