Python self 와 cls의 차이
Python self 와 cls의 차이
특정 method를 호출하기 위해 Instance의 선언을 요구하는 method를 Instance method라고 부름
반면에, Class Method는 Instance Method와 다소 흡사하지만 첫번째 매개변수를 보내는 일을 하지 않고, 클래스
자기 자신을 첫번째 매개변수로 받는 차이가 있음
class ClassMethod:
@classmethod
def print_name(cls):
print('my name is %s' %(cls.__class__.__name__))
ClassMethod.print_name()
>>my name is type
위처럼 객체를 따로 선언해줄 필요없이 함수를 호출할 수 있음
Static Method
앞의 두 method들과 다르게 인스턴스나 클래스를 인자로 받지 않음
Static Method는 클래스 내부에 선언되어 클래스 네임스페이스 안에 저장된다는 점을 제외하면 일반 method들과 크게 다른점이 없다.
하지만 static method의 특징은 클래스를 통해서도, 인스턴스를 통해서도 호출이 가능하다는 점
class StaticMethod:
@staicmethod
def print_name(name):
return '내 이름은 {} 입니다.'.format(name)
# 클래스를 통해서 호출가능
print(StaticMethod.print_name('minsoo'))
>>내 이름은 minsoo 입니다.
# 인스턴스를 통해서도 호출이 가능
me = StaticMethod()
print(me.print_name('minsoo'))
>>내 이름은 minsoo 입니다.