假设我有一个名为Vehicle
的类,我有两个名为Boat
和Car
的子类,它们继承自Vehicle
现在假设我有一辆两栖车,它使用多重继承
现在我的问题是AmphibiousVehicle
的__init__
函数应该如何定义
Boat
和Car
都通过调用super().__init__()
初始化Vehicle
我需要在AmphibiousVehicle
的init中逐个初始化Boat
和Car
吗
或者我可以打一次电话给super
?如果我这样做,我看不到Car
是如何初始化的
Tags:
Python使用协作多重继承。这意味着您对
super()
的调用不一定会命中调用它的基类,而是命中从您开始的方法解析顺序(MRO)中的下一个类证明:
给出输出:
因此,类
A
内的调用super().__init__()
调用类B
内的__init__()
,即使类A
不从类B
继承只要您的所有类都确保它们在适当的地方调用
super
,您只需要调用它一次,并相信一切都会合作MRO基本上是python在类中搜索方法或属性的顺序。您可以通过检查类上的
__mro__
属性来检查此顺序:给了我们:
相关问题 更多 >
编程相关推荐