Comment accéder aux variables de classe?

Pour accéder à une variable de classe à partir d'une méthode d'instance, utilisez class.variable name.

python


In [1]: class A(object):
   ...:     TEST = "test"
   ...:     def test(self):
   ...:         print(A.TEST)
   ...:

In [2]: a = A()

In [3]: a.test()
test

En fait, il est possible d'accéder aux variables de classe via self (premier argument de la méthode d'instance).

python


In [4]: class A(object):
    TEST = "test"
    def test(self):
        #Il est également accessible via soi-même.
        print(self.TEST)
   ...:

In [5]: a = A()

In [6]: a.test()
test

Lors de l'accès avec self, il n'y a pas de problème si la variable de classe est immuable (lecture seule). (Remarque: Python n'a pas de fonction équivalente à final en Java, c'est donc un gentleman's agreement pour le gérer sans réécrire) Cependant, si vous voulez rendre la variable de classe variable, il est possible que "j'avais l'intention de réécrire la variable de classe mais que j'aie défini la variable d'instance avec le même nom" si je ne faisais pas attention.

python


# A.A au lieu de TEST.Je l'ai attribué à TEST.
In [7]: a.TEST = "instancetest"

#Variable de classe(A.TEST)Pas de variables d'instance(a.TEST)Est référencé.
In [8]: a.test()
instancetest

Je pense que class.variable name est bon pour accéder aux variables de classe, mais il est vulnérable au changement des noms de classe. Est-il correct de s'appuyer sur des outils de refactoring?

Recommended Posts

Comment accéder aux variables de classe?
Variable de classe
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Après tout, combien dois-je écrire un article sur Qiita?
[Django] J'ai essayé d'implémenter des restrictions d'accès par héritage de classe.
Python: variables de classe et d'instance
Globalisation des variables d'instance de classe
Variables de classe et d'instance Python
Comment définir les variables Go
J'étais accro aux variables de classe et aux variables d'instance erronées en Python