Lors de l'explication du concept de variables de classe et de variables d'instance en Python
Pour les variables définies comme des variables de classe mais pas comme des variables d'instance,
N'est-il pas étrange que vous puissiez accéder avec la notation des variables d'instance, self. Class variable name
? J'ai remarqué.
→ J'ai écrit un code simple et j'ai confirmé le comportement de "self. Class variable".
En Python, lorsque vous faites référence à self.variable name
,
Pour éviter la congestion, il est plus sûr d'écrire nom de classe.nom de variable de classe
lors du référencement d'une variable de classe dans une instance.
self.py
class Hoge:
id = 0
@classmethod
def dump_class(cls):
print("Variable de classe: ", cls.id)
def construct(self, id):
self.id = id
def dump_instance(self):
print("Variable d'instance: ", self.id)
if __name__ == "__main__":
Hoge.dump_class() # -> 0
hoge_instance = Hoge()
hoge_instance.dump_instance() # -> 0,Si aucune variable d'instance n'est définie, la variable de classe portant le même nom sera référencée.
hoge_instance.dump_class() # -> 0
hoge_instance.construct(id=10) #Définir des variables d'instance
hoge_instance.dump_instance() # -> 10,La référence de variable d'instance est prioritaire
hoge_instance.dump_class() # -> 0
Lorsque vous accédez aux variables de classe, vous devez éviter d'y accéder comme "variables instance.class" ou "variables self.class" à moins que vous n'ayez une raison spécifique de le faire. En Python, les variables d'instance peuvent être créées à partir d'objets d'instance, qui peuvent involontairement masquer des variables de classe avec des variables d'instance. Variables de classe Python et variables d'instance | UX MILK
Recommended Posts