class Parent(object):
class_var = 'parent_class_var'
@classmethod
def class_method(cls):
print('cls: {}'.format(cls))
print("class_var: {}".format(cls.class_var))
@staticmethod
def static_method(raw_str):
print(raw_str.strip())
if __name__ == '__main__':
raw_str = 'He has been fired\n'
# cls: <class '__main__.Parent'>
# class_var: parent_class_var
Parent.class_method()
# He has been fired
Parent.static_method(raw_str)
parent = Parent()
# cls: <class '__main__.Parent'>
# class_var: parent_class_var
parent.class_method()
# He has been fired
parent.static_method(raw_str)
Weil statische Methoden keine Klassen als Argumente verwenden Klassenunabhängige Logik wird als Methode implementiert. Wenn die Methode jedoch nicht in erster Linie von der Klasse abhängt, sollte sie dann nicht als Funktion anstatt als Methode in der Klasse implementiert werden?
class Child(Parent):
@staticmethod
def static_method(raw_str):
print(raw_str.strip()+'!')
Statische Methoden sind jedoch nützlich, wenn Sie eine Klasse erben und den Logikinhalt zwischen übergeordnet und untergeordnet ändern. Es kann als Klassenmethode implementiert werden. Es kann betont werden, dass es sich um einen klassenunabhängigen Prozess handelt.
Da in C ++ und Java nur statische Methoden existieren Es ist nicht zu leugnen, dass die Existenz von Klassenmethoden und statischen Methoden in Python etwas redundant ist.
Recommended Posts