He creado una clase base:
class Thing(): def __init__(self, name): self.name = name
Quiero extender la clase y agregar al método init para que SubThing
tenga un name
y una propiedad de time
. ¿Cómo lo hago?
class SubThing(Thing): # something here to extend the init and add a "time" property def __repr__(self): return '' % (self.name, self.time)
Cualquier ayuda sería increíble.
Simplemente puede definir __init__
en la subclase y llamar a super
para llamar a los métodos __init__
los padres de __init__
apropiada:
class SubThing(Thing): def __init__(self, *args, **kwargs): super(SubThing, self).__init__(*args, **kwargs) self.time = datetime.now()
Sin embargo, asegúrate de tener tu subclase de clase base del object
, ya que super
no funcionará con clases de estilo antiguo:
class Thing(object): ...
Debe escribir otro método __init__
en SubThing
y luego llamar al constructor de la superclase para inicializar sus campos.
Estas preguntas y respuestas deben proporcionarle algunos ejemplos más.