Comment étendre Python classe init
J'ai créé une classe de base:
class Thing():
def __init__(self, name):
self.name = name
Je veux étendre la classe et les ajouter à la init méthode afin que SubThing
a à la fois une name
et un time
de la propriété. Comment dois-je faire?
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énial.
Vous devez vous connecter pour publier un commentaire.
Il vous suffit de définir
__init__
dans la sous-classe et appelsuper
d'appeler les parents__init__
méthodes appropriées:Assurez-vous d'avoir votre classe de base sous-classe de
object
si, commesuper
ne fonctionne pas avec les vieux-classes de style:SubThing
danssuper
, vous pouvez le fairesuper(self.__class__, self).__init__(*args, **kwargs)
. Cela fonctionne aussi avec créé dynamiquement des classes à l'aide detype()
.TypeError: must be type, not classobj
- l'erreur est déclenchée par mon super ligne.self.time = ...
etsuper(...
.Vous devriez écrire un autre
__init__
méthode dansSubThing
et puis d'appeler le constructeur de la superclasse pour initialiser les champs.Cette Q&A devrait vous donner quelques exemples de plus.