如何扩展python类init

How to extend Python class init

我创建了一个基类:

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

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

1
2
3
4
5
class SubThing(Thing):
    # something here to extend the init and add a"time" property

    def __repr__(self):
        return '<%s %s>' % (self.name, self.time)

任何帮助都是了不起的。


您只需在子类中定义__init__,并调用super适当地调用父类的__init__方法:

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

但是,请确保拥有来自object的基类子类,因为super不适用于旧式类:

1
2
class Thing(object):
    ...


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

这个问答应该为您提供更多的示例。