티스토리 뷰

[정적메소드]



- 정적메소드는 클래스에서 직접 접근할 수 있는 메소드


- 파이썬에서는 클래스에서 직접 접근할 수 있는 메소드가 두가지가 있다.

(staticmethod, classmethod)


- 파이썬에서는 정적메소드임에도 불구하고 인스턴스에서도 접근 가능!


- 인스턴스 메소드는 첫번쨰 인자로 인스턴스 자기 자신 self 를 입력한다.


- calssmethod 는 첫번째 인자로 클래스 cls 를 입력한다.


- staticmethod 는 별도의 인자가 없다. 


class CustomClass:

def instance_method(self, a, b):
return a + b

@classmethod
def class_method(cls, a, b):
return a + b

@staticmethod
def static_method(a, b):
return a + b



[staicmethod, classmethod 차이]


class Language:
default_language = "English"

def __init__(self):
self.show = '나의 언어는' + self.default_language

@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_language = "한국어"




staticmethod 에서는 부모클래스의 클래스 속성을 가저 오고


classmethod 에서는 cls 인자를 활용하여 해당 클래스의 속성을 가저온다.


  >>> from language import *
  >>> a = KoreanLanguage.static_my_language()
  >>> b = KoreanLanguage.class_my_language()
  >>> a.print_language()
  나의 언어는English
  >>> b.print_language()
  나의 언어는한국어














댓글