J'ai créé une classe de base:
class Thing():
def __init__(self, name):
self.name = name
Je veux étendre la classe et l'ajouter à la méthode init pour que SubThing
ait à la fois une propriété name
et une propriété time
. Comment fait-on ça?
class SubThing(Thing):
# something here to extend the init and add a "time" property
def __repr__(self):
return '<%s %s>' % (self.name, self.time)
Toute aide serait géniale.
Vous pouvez simplement définir __init__
Dans la sous-classe et appeler super
pour appeler correctement les méthodes __init__
Des parents:
class SubThing(Thing):
def __init__(self, *args, **kwargs):
super(SubThing, self).__init__(*args, **kwargs)
self.time = datetime.now()
Assurez-vous d'avoir votre sous-classe de classe de base à partir de object
, car super
ne fonctionnera pas avec les classes à l'ancienne:
class Thing(object):
...
Vous devriez écrire un autre __init__
méthode dans SubThing
, puis appelez le constructeur de la superclasse pour initialiser ses champs.
Ce Q&R devrait vous fournir quelques exemples supplémentaires.