[Python] Différence entre la méthode de classe et la méthode statique

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)

Point commun

la différence

Comment l'utiliser correctement?

Parce que les méthodes statiques ne prennent pas les classes comme arguments La logique indépendante de la classe sera implémentée en tant que méthode. Cependant, si la méthode ne dépend pas de la classe en premier lieu, ne devrait-elle pas être implémentée en tant que fonction plutôt qu'en tant que méthode dans la classe?

class Child(Parent):

    @staticmethod
    def static_method(raw_str):
        print(raw_str.strip()+'!')

Cependant, les méthodes statiques sont utiles lors de l'héritage d'une classe et de la modification du contenu logique entre parent et enfant. Il peut être implémenté comme une méthode de classe, On peut souligner qu'il s'agit d'un processus indépendant de la classe.

Question

Puisque seules les méthodes statiques existent en C ++ et Java Il est indéniable que l'existence à la fois de méthodes de classe et de méthodes statiques en Python est un peu redondante.

Recommended Posts

[Python] Différence entre la méthode de classe et la méthode statique
[Python] Différence entre fonction et méthode
[python] Différence entre variable et self. Variable dans la classe
Différence entre Ruby et Python Split
Différence entre java et python (mémo)
Différence entre list () et [] en Python
Différence entre la série python2 et la série python3 dict.keys ()
Python - Différence entre exec et eval
[Python] Différence entre randrange () et randint ()
[Python] Différence entre trié et trié (Colaboratoire)
Méthode de classe Méthode statique
Méthode de concaténation de liste en python, différence entre list.extend () et opérateur «+»
différence entre les instructions (instructions) et les expressions (expressions) en Python
Différence entre @classmethod et @staticmethod en Python
Différence entre append et + = dans la liste Python
Différence entre non local et global en Python
[Python Iroha] Différence entre List et Tuple
[python] Différence entre la sortie rand et randn
Classes et méthodes statiques
À propos de la différence entre "==" et "is" en python
Différence entre processus et travail
Diverses méthodes de classe et méthodes statiques
Python: variables de classe et d'instance
Différence entre "categorical_crossentropy" et "sparse_categorical_crossentropy"
Différence entre Ruby et Python en termes de variables
Différence entre régression et classification
Variables de classe et d'instance Python
Différence entre return, return None et no return description en Python
Différence entre np.array et np.arange
Différence entre MicroPython et CPython
Différences dans la façon d'écrire du code source externe entre Ruby et Python
Différence entre ps a et ps -a
Différence entre return et print-Python
Module Python num2words Différence de comportement entre l'anglais et le russe
Python> Différence entre la sortie inpbt et print (inpbt)> [1. 2. 3.] / array ([1., 2., 3.], dtype = float32)
Utilisation correcte de la méthode d'instance et de la méthode de classe
objet perl et classe python partie 2.
Différence entre SQLAlchemy filter () et filter_by ()
Mémorandum (différence entre csv.reader et csv.dictreader)
Définitions de classe Python et gestion des instances
(Remarque) Différence entre la passerelle et la passerelle par défaut
Différence entre le randint de Numpy et le randint de Random
Différence entre Python, stftime et strptime
Différence entre tri et tri (mémorial)
objet perl et classe python partie 1.
Différence entre SQLAlchemy flush () et commit ()
Python / Numpy> Lien> Différence entre numpy.random et random.random> thread-safe ou non
Fonction pour ouvrir un fichier en Python3 (différence entre open et codecs.open et comparaison de vitesse)
Communiquez entre Elixir et Python avec gRPC
Différence d'authenticité entre Python et JavaScript
Différences entre Ruby et Python dans la portée
[Xg boost] Différence entre softmax et softprob
[Django ORM] Différence entre values () et only ()
Méthode d'essai pour la différence de taille entre les groupes
Différence entre la régression linéaire, la régression Ridge et la régression Lasso
Différence entre le fichier env_file docker-compose et le fichier .env
[Python3] Basculer entre Shift_JIS, UTF-8 et ASCII
Différence de vitesse entre wsgi, bouteille et flacon