모든 인스턴스 메서드에는 적어도 하나의 위치 매개 변수가 있어야 합니다. 이 매개 변수는 메서드가 호출되는 개체 인스턴스를 참조합니다. 하나 이상의 매개 변수가 없는 인스턴스 메서드를 호출하면 “TypeError”가 발생합니다. 관례적으로 이 첫 번째 매개변수는 보통 “self”로 명명됩니다.
클래스 메소드, 즉 @classmethod
어노테이션이 있는 메소드도 하나 이상의 매개 변수가 필요합니다. 유일한 차이점은 클래스 인스턴스 대신 클래스 자체를 수신한다는 것입니다. 관례적으로 이 첫 번째 매개변수는 일반적으로 cls
로 명명됩니다. __new__
와 __init_subclass__
는 @classmethod
데코레이터가 없어도 클래스를 첫 번째 인수로 사용합니다.
이 규칙은 클래스 메서드의 인스턴스에 위치 매개 변수가 하나 이상 없을 때 문제를 발생시킵니다.
규칙을 어긴 코드
class MyClass:
def instance_method(): # 규칙을 어긴 코드. "self" 매개 변수 없음
print("instance_method")
@classmethod
def class_method(): # 규칙을 어긴 코드. "cls" 매개 변수 없음
print("class_method")
규칙을 준수한 해결책
class MyClass:
def instance_method(self):
print("instance_method")
@classmethod
def class_method(cls):
print("class_method")
@staticmethod
def static_method():
print("static_method")
같이보면 좋은 자료
- Python documentation - 메서드 오브젝트
If you like SONARKUBE, don’t forget to give me a star.