정적메소드 (@staticmethod, @classmethod)¶
정적메소드는 클래스에서 직접 접근할 수 있는 메소드이다.
@staticmethod¶
인스턴스 메소드와 달리 self라는 인자를 가지고 있지 않다.
@classmethod¶
인스턴스 메소드와 달리 self 라는 인자 대신 cls 라는 인자를 가짐
@staticmethod 와 @classmethod 의 차이¶
두 정적 메소드는 상속에서 차이가 난다.
class Person:
default= "아빠"
def __init__(self):
self.data = self.default
@classmethod
def class_person(cls):
return cls()
@staticmethod
def static_person():
return Person()
class WhatPerson(Person):
default = "엄마"
person1 = WhatPerson.class_person() # return 엄마
person2 = WhatPerson.static_person() # return 아빠
@staticmethod 는 부모 클래스의 클래스 속성 값을 가져오지만,
@classmethod 는 cls 인자를 활용하여 현재 클래스의 속성을 가져온다.