小编典典

如何从 Python 中的子类调用父类的方法?

all

在 Python 中创建简单的对象层次结构时,我希望能够从派生类调用父类的方法。在 Perl 和 Java 中,这个 (
super)
有一个关键字。在 Perl 中,我可能会这样做:

package Foo;

sub frotz {
    return "Bamf";
}

package Bar;
@ISA = qw(Foo);

sub frotz {
   my $str = SUPER::frotz();
   return uc($str);
}

在 Python 中,似乎我必须从子类中显式命名父类。在上面的示例中,我必须执行类似Foo::frotz().

这似乎不正确,因为这种行为使得很难建立深层层次结构。如果孩子需要知道什么类定义了继承的方法,那么就会产生各种信息痛苦。

这是python的实际限制,我理解的差距还是两者兼而有之?


阅读 111

收藏
2022-03-03

共1个答案

小编典典

使用super()功能:

class Foo(Bar):
    def baz(self, **kwargs):
        return super().baz(**kwargs)

对于 Python < 3,您必须明确选择使用新型类并使用:

class Foo(Bar):
    def baz(self, arg):
        return super(Foo, self).baz(arg)
2022-03-03