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

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

2 Solutions collect form web for “Как расширить класс класса Python”

Вы можете просто определить __init__ в подклассе и вызвать super чтобы вызвать методы __init__ родителей соответствующим образом:

 class SubThing(Thing): def __init__(self, *args, **kwargs): super(SubThing, self).__init__(*args, **kwargs) self.time = datetime.now() 

Убедитесь, что у вас есть класс подкласса базового класса, поскольку super не будет работать со старыми классами:

 class Thing(object): ... 

Вы должны написать еще один метод __init__ в SubThing а затем вызвать конструктор суперкласса для инициализации его полей.

Это Q & A должно предоставить вам еще несколько примеров.

  • Возможно ли узнать путь к файлу подкласса в python?
  • Наследование атрибутов в python с использованием _init_
  • Ошибка при вызове баз метакласса: аргумент функции () должен быть кодом, а не str
  • Наилучшая практика наследования: * args, ** kwargs или явно задающие параметры
  • Что происходит, когда я наследую экземпляр вместо класса в Python?
  • Python unittest TestCase с наследованием
  • Дескрипторы и наследование Python
  • Поведение Python super () не является надежным
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.