[Python] Class Method와 Static Method 차이 쉽게 이해하기
2023. 5. 15. 12:02ㆍ개발을 파헤치다/쉽게 풀어쓴 개념
반응형
class method와 static method는 상속에서 확실한 차이가 있습니다.
이 둘 모두 클래스에서 객체를 생성하지 않고 바로 접근하는 정적 메서드의 역할을 하는데요.
객체별로 달라지는 것이 아니기 때문에 흔히 유틸리티성 클래스를 만들 때 많이 사용합니다.
기본적인 사용은 아래와 같이 합니다.
class Test:
@staticmethod
def add(x,y) :
return x + y
print Test.add(1,1) # 2
t = Test()
print t.add(1,1) # 2
python에서는 다른 언어와는 다르게 정적 메서드임에도 불구하고 객체에서도 접근이 가능합니다.
이 부분을 유의해야합니다.
class Test:
@classmethod
def add(cls, x, y) :
return x + y
print Test.add(1,1) # 2
classmethod는 첫 번째 인자로 객체 자신(self)이 반드시 들어갑니다.
이렇게 사용하면 둘이 큰 차이가 없어 보입니다. 하지만 상속에서 둘의 결과가 명확하게 달라지는데요.
class Language:
default = "English"
def __init__(self):
self.show = '나의 언어는 ' + self.default
@classmethod
def class_my_language(cls):
return cls()
@staticmethod
def static_my_language():
return Language()
def print_language(self):
print(self.show)
class KoreanLanguage(Language):
default = "한국어"
a = KoreanLanguage.static_my_language()
b = KoreanLanguage.class_my_language()
a.print_language() >> 나의 언어는 English
b.print_language() >> 나의 언어는 한국어
위의 결과에서도 알 수 있듯이 static method는 부모 클래스의 속성값을 가져옵니다.
하지만 class method에서는 객체 자신(cls or self)을 활용해서 객체 자신의 클래스 속성을 가져오는 것을 알 수 있습니다.
반응형
'개발을 파헤치다 > 쉽게 풀어쓴 개념' 카테고리의 다른 글
[Git] SourceTree에서 여러 계정 같이 사용하는 꿀팁 (feat. 2023 최신) (0) | 2023.04.25 |
---|---|
JWT의 구조와 장단점 (0) | 2023.04.21 |
JWT(JSON Web Token)은 왜 쓸까? 등장하게 된 배경 (0) | 2023.04.19 |
템플릿 엔진이란 무엇인가? (1) | 2018.07.31 |
CGI와 WSGI을 파헤치다 (0) | 2018.06.06 |