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

发布时间 2023-11-02 20:31:25作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=在Python中,如何从子类调用父类的方法是?

在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的理解有缺陷?


使用 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)