在 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 中的实际限制,我理解上的差距还是两者兼而有之?
原文由 jjohn 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
super()
功能:对于 Python < 3,您必须明确选择使用 新式类 并使用: