43

我创建了一个基类:

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

我想扩展该类并添加到init方法中,以便它SubThing同时具有 aname和 atime属性。我该怎么做?

class SubThing(Thing):
    # something here to extend the init and add a "time" property

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

任何帮助都是极好的。

4

2 回答 2

58

您可以__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):
    ...
于 2012-10-03T02:44:00.730 回答
1

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

此问答应该为您提供更多示例。

于 2012-10-03T02:43:24.103 回答