如何扩展Python类的init

发布于 2021-01-29 17:03:03

我创建了一个基类:

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)

任何帮助都是极好的。

关注者
0
被浏览
168
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以只__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):
        ...
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看