Quel est le Python d'erreur “nom "auto" n'est pas défini”?
Je ne peux pas comprendre quel est le problème avec cette très simple extrait de:
class A(object):
def printme(self):
print "A"
self.printme()
a = A()
Traceback (most recent call last): File "prog.py", line 1, in
classe A(objet): File "prog.py", line 5, dans Un
auto.printme() NameError: name 'soi' n'est pas défini
OriginalL'auteur Yarin | 2011-11-18
Vous devez vous connecter pour publier un commentaire.
Les éléments suivants doivent expliquer le problème. Peut-être vous voulez essayer cela?
Le nom
self
est défini à l'intérieur de méthodes que de déclarer explicitement un paramètre appeléself
. Il n'est pas défini à l'étendue de classe.De l'étendue de classe est exécutée qu'une seule fois, à la définition de la classe de temps. "En l'appelant" la classe avec
A()
appelle le constructeur de la__init__()
à la place. Alors peut-être que vous voulez vraiment cela:Pourquoi essayez-vous de le faire?
Qu'entendez-vous par "callable", et ce "au sein d'une instance de classe"? Il n'existe aucune instance de la classe à la définition du temps -- la classe n'est même pas encore définie, donc il ne peut pas être une instance.
ok c'est raisonnable mon appel appartient à l'intérieur de la init corps... rouillé ce matin.
OriginalL'auteur Sven Marnach
Si vous avez l'intention pour la fonction à exécuter chaque fois qu'une instance de la classe est créée, essayez ceci:
OriginalL'auteur Izkata
C'est exactement ce qu'il dit:
self
n'est pas définie lorsque vous appelezself.printme()
.self
n'est pas comme par magie définies pour vous en Python, il ne fonctionne qu'à l'intérieur d'une méthode qui a un argument nomméself
. Si cela peut aider, essayez de remplacer le motself
avec quelque chose d'autre, direfoo
, tout au long de votre programme (car il n'y a vraiment rien de spécial à propos deself
comme un identificateur).Thomas - oui, je viens de comprendre, il avait déjà supprimé le commentaire - merci
OriginalL'auteur David Z
si vous voulez imprimer quelque chose lorsque vous créez une instance de l'objet à utiliser:
OriginalL'auteur catalin.costache