Подтвердить что ты не робот

Как расширить класс класса 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)

Любая помощь будет потрясающей.

4b9b3361

Ответ 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):
    ...