在 Python 中从子类调用父类方法
在设计对象层次结构时,通常需要从内部的父类调用方法派生类。在 Perl 和 Java 等语言中,“super”关键字有助于实现这一点。然而,在Python中,方法似乎有所不同。
显式父类引用
在Python中,显式命名父类似乎是唯一的方法从孩子那里调用它的方法。例如,如果父类 Foo 包含方法 frotz,则子类 Bar 需要将其引用为 Foo::frotz()。
限制和问题
这种方法可能会在复杂的层次结构中带来挑战,因为孩子们可能并不总是知道定义继承方法的类。这可能会导致维护和可读性问题。
Super() 函数
幸运的是,Python 2.2 及更高版本引入了 super() 函数来克服此限制。 super() 允许您直接访问父类方法。下面是一个例子:
class Foo: def frotz(self): return "Baz" class Bar(Foo): def frotz(self): # Call the parent class's frotz method using super() return super().frotz() + " Quux"
通过调用 super().frotz(),子类 Bar 可以访问其父类 Foo 的 frotz 方法。
New-Style类
对于 3.0 之前的 Python 版本,您必须明确选择使用新样式类。在这种情况下,语法略有不同:
class Foo(Bar): def baz(self, arg): return super(Foo, self).baz(arg)
在这些旧版本中, super 接受两个参数:子类名称(例如 Foo)和实例对象(例如 self)。
以上是如何在Python中从子类调用父类方法?的详细内容。更多信息请关注PHP中文网其他相关文章!