Je me demande si nous pouvons appeler une variable initiée dans Je veux atteindre la même sortie comme celle-ci: p> Comment puis-je accéder au auto code> en classe. Par exemple: auto.var1 < / code> dans callvar1 code>? p> p>
3 Réponses :
Utilisez le mot-clé auto pour accéder aux membres de la classe.
class ABC():
var1 = '123'
def method1(self):
self.var1 = '123'
@classmethod
def callvar1(self):
print(self.var1)
Etant donné que Votre autre option serait de ne pas en faire une méthode de classe. P> callvar1 code> est une méthode de classe, il n'a pas accès à auto code>. En effet, la méthode n'est pas liée à une instance spécifique de la classe, mais plutôt à la classe elle-même. Par conséquent, lorsque vous appelez la méthode, elle ne sait pas quelle instance vous faites référence à. Comme vous l'avez fait dans le deuxième bloc du code, vous devez transmettre l'objet dont var1 code> vous souhaitez imprimer sur la fonction. P>
Les méthodes de classe sont liées à la classe elle-même plutôt em> qu'une instance particulière de celui-ci, donc si vous essayez d'accéder à Votre meilleure option consiste simplement à simplement rendre la méthode pas une méthode de classe (en fonction de votre cas d'utilisation): p> Bien qu'une autre option consiste à adopter une instance de la classe sur la méthode de la classe: p> auto.var1 code> (une variable d'instance) à l'intérieur du Méthode de classe Vous n'allez pas avoir beaucoup de plaisir.
Non, il n'y a pas d'état d'instance dans une méthode de classe, c'est tout le point B>. Vous pourriez passer l'instance explicitement comme un autre argument ... semble inélégant