Как расширить класс класса Python
Я создал базовый класс:
class Thing():
def __init__(self, name):
self.name = name
Я хочу расширить класс и добавить в метод init, так что SubThing
имеет свойство name
и time
. Как это сделать?
class SubThing(Thing):
# something here to extend the init and add a "time" property
def __repr__(self):
return '<%s %s>' % (self.name, self.time)
Любая помощь будет потрясающей.
Ответы
Ответ 1
Вы можете просто определить __init__
в подклассе и вызвать super
для надлежащего вызова методов __init__
родителей:
class SubThing(Thing):
def __init__(self, *args, **kwargs):
super(SubThing, self).__init__(*args, **kwargs)
self.time = datetime.now()
Убедитесь, что ваш подкласс базового класса находится в object
, хотя, поскольку super
не будет работать со старыми классами:
class Thing(object):
...
Ответ 2
Вы должны написать еще один метод __init__
в SubThing
, а затем вызвать конструктор суперкласса для инициализации его полей.
Этот Q & A должен предоставить вам несколько примеров.