J'ai de la difficulté à comprendre la logique des variables d'instance en héritage. Ceci est mon (simplifié) code avec des commentaires expliquant comment je comprends son comportement:Accès à l'attribut d'instance de classe de base modifié dans la classe dérivée
class Main(object):
def __init__(self):
self.p = Parent() # self.parameter = []
self.c = Child() # self.parameter = []
def run(self):
self.p.setting() # assigning value to self.parameter
self.c.getting()
class Parent(object):
def __init__(self):
self.parameter = []
def setting(self):
self.parameter = [1, 2, 3]
class Child(Parent):
# not redefining __init__, so Parent __init__ is called
def getting(self):
# value was assigned to self.parameter in setting method,
# called before getting
print self.parameter
Main().run()
getting
impressions []
, au lieu de [1, 2, 3]
que je m'y attendais. Pourquoi est-ce vrai? Depuis Child
part __init__
avec Parent
, au début self.parameter = []
pour les deux mais pourquoi est-il encore []
quand il a été attribué une valeur longtemps après Child().__init__
a été appelé? Que dois-je faire pour obtenir la valeur self.parameter
modifiée dans getting
?
Python est pas Java; tout ne doit pas être une classe. Débarrassez-vous de 'Main'. – chepner