如何扩展Python类init

时间:2012-10-03 02:39:05

标签: python class inheritance initialization

我创建了一个基类:

class Thing():
    def __init__(self, name):
        self.name = name

我想扩展该类并添加到 init 方法,以便SubThing具有nametime属性。我该怎么做?

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 个答案:

答案 0 :(得分:33)

您可以在子类中定义__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):
    ...

答案 1 :(得分:1)

您应该在__init__中编写另一个SubThing方法,然后调用超类的构造函数来初始化其字段。

This Q&A should provide you some more examples.