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