Python: 'super' objet n'a pas d'attribut "attribute_name'
Je suis en train d'essayer d'accéder à une variable de la classe de base. Voici la classe parent:
class Parent(object):
def __init__(self, value):
self.some_var = value
Et voici l'enfant de la classe:
class Child(Parent):
def __init__(self, value):
super(Child, self).__init__(value)
def doSomething(self):
parent_var = super(Child, self).some_var
Maintenant, si j'essaie d'exécuter ce code:
obj = Child(123)
obj.doSomething()
- Je obtenir de l'exception suivante:
Traceback (most recent call last):
File "test.py", line 13, in <module>
obj.doSomething()
File "test.py", line 10, in doSomething
parent_var = super(Child, self).some_var
AttributeError: 'super' object has no attribute 'some_var'
Ce que je fais mal? Quelle est la méthode recommandée pour accéder aux variables de la classe de base en Python?
OriginalL'auteur invarbrass | 2011-05-20
Vous devez vous connecter pour publier un commentaire.
Après la classe de base de
__init__
couru, la dérivée de l'objet a les attributs définis (par exemplesome_var
) que c'est le même objet que laself
dans la classe dérivée'__init__
. Vous pouvez et devriez utiliserself.some_var
partout.super
d'accéder à des trucs de classes de base, mais les variables d'instance sont (comme son nom l'indique) une partie à une instance, ne fait pas partie de cette instance de la classe.OriginalL'auteur
L'attribut some_var n'existe pas dans la classe Parent.
Quand vous le mettez au cours de
__init__
, il a été créé dans l'instance de votre classe Enfant.OriginalL'auteur Marek P