[Python] Unterschied zwischen Klassenmethode und statischer Methode

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)

Gemeinsamer Punkt

der Unterschied

Wie richtig zu verwenden?

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.

Frage

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

[Python] Unterschied zwischen Klassenmethode und statischer Methode
[Python] Unterschied zwischen Funktion und Methode
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
Unterschied zwischen Ruby und Python Split
Unterschied zwischen Java und Python (Memo)
Unterschied zwischen list () und [] in Python
Unterschied zwischen der Python2-Serie und der Python3-Serie dict.keys ()
Python - Unterschied zwischen exec und eval
[Python] Unterschied zwischen randrange () und randint ()
[Python] Unterschied zwischen sortiert und sortiert (Colaboratory)
Klassenmethode statische Methode
Listenverkettungsmethode in Python, Unterschied zwischen list.extend () und dem Operator "+"
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Unterschied zwischen @classmethod und @staticmethod in Python
Unterschied zwischen Anhängen und + = in der Python-Liste
Unterschied zwischen nicht lokal und global in Python
[Python Iroha] Unterschied zwischen Liste und Tupel
[Python] Unterschied zwischen Rand- und Randn-Ausgabe
Klassen- und statische Methoden
Über den Unterschied zwischen "==" und "is" in Python
Unterschied zwischen Prozess und Job
Verschiedene Klassenmethoden und statische Methoden
Python: Klassen- und Instanzvariablen
Unterschied zwischen "categoryical_crossentropy" und "sparse_categorical_crossentropy"
Unterschied zwischen Ruby und Python in Bezug auf Variablen
Unterschied zwischen Regression und Klassifikation
Python-Klassen- und Instanzvariablen
Unterschied zwischen return, return None und no return description in Python
Unterschied zwischen np.array und np.arange
Unterschied zwischen MicroPython und CPython
Unterschiede beim Schreiben von externem Quellcode zwischen Ruby und Python
Unterschied zwischen ps a und ps -a
Unterschied zwischen Return und Print-Python
Python-Modul num2words Verhaltensunterschied zwischen Englisch und Russisch
Python> Unterschied zwischen Inpbt- und Print-Ausgabe (Inpbt)> [1. 2. 3.] / Array ([1., 2., 3.], dtype = float32)
Ordnungsgemäße Verwendung der Instanzmethode und der Klassenmethode
Perl-Objekt und Python-Klasse Teil 2.
Unterschied zwischen SQLAlchemy filter () und filter_by ()
Memorandum (Unterschied zwischen csv.reader und csv.dictreader)
Python-Klassendefinitionen und Instanzbehandlung
(Hinweis) Unterschied zwischen Gateway und Standard-Gateway
Unterschied zwischen Numpys Randint und Randoms Randint
Unterschied zwischen Python, Stftime und Strptime
Unterschied zwischen sortiert und sortiert (Denkmal)
Perl-Objekt und Python-Klasse Teil 1.
Unterschied zwischen SQLAlchemy flush () und commit ()
Python / Numpy> Link> Unterschied zwischen numpy.random und random.random> threadsicher oder nicht
Funktion zum Öffnen einer Datei in Python3 (Unterschied zwischen open und codecs.open und Geschwindigkeitsvergleich)
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Unterschied in der Authentizität zwischen Python und JavaScript
Unterschiede zwischen Ruby und Python im Umfang
[Xg Boost] Unterschied zwischen Softmax und Softprob
[Django ORM] Unterschied zwischen Werten () und nur ()
Testmethode für Größenunterschiede zwischen Gruppen
Unterschied zwischen linearer Regression, Ridge-Regression und Lasso-Regression
Unterschied zwischen Docker-Compose-Datei env_file und .env-Datei
[Python3] Wechseln Sie zwischen Shift_JIS, UTF-8 und ASCII
Geschwindigkeitsunterschied zwischen wsgi, Flasche und Flasche