从孩子外面调用父方法

时间:2017-02-02 23:33:56

标签: python inheritance

我有一堆class个对象都是从基类继承的。其中一些覆盖了一个方法(save)并做了一些事情。对于这个特定的用例,我想暂时不允许使用子save方法(如果存在),而是强制使用父save方法。

class BaseClass(object):
    def save(self, *args, **kwargs):
        print("Base Called")

class Foo(BaseClass):
    def save(self, *args, **kwargs):
        # do_stuff
        print("Foo called")
        return super(Foo, self).save(*args, **kwargs)

obj = Foo()

如何从孩子外面打电话给obj父母保存,以便打印“Base Called”?

1 个答案:

答案 0 :(得分:4)

您可以使用super()

从父对象调用方法
super(type(obj), obj).save()

当我运行时:

class BaseClass(object):
    def save(self, *args, **kwargs):
        print("Base Called")

class Foo(BaseClass):
    def save(self, *args, **kwargs):
        # do_stuff
        print("Foo called")
        return super(Foo, self).save(*args, **kwargs)

obj = Foo()
super(type(obj), obj).save()

输出:

Base Called