【发布时间】:2015-05-04 10:34:33
【问题描述】:
我正在尝试理解 Python 多重继承,并且我有点理解 MRO、super() 和 MI 中的传递参数,但是当我阅读下面的示例时,我有点困惑。
class Contact:
all_contacts = []
def __init__(self, name=None, email=None, **kwargs):
super().__init__(**kwargs)
self.name = name
self.email = email
self.all_contacts.append(self)
class AddressHolder:
def __init__(self, street=None, city=None, state=None, code=None, **kwargs):
super().__init__(**kwargs)
self.street = street
self.city = city
self.state = state
self.code = code
class Friend(Contact, AddressHolder):
def __init__(self, phone='', **kwargs):
super().__init__(**kwargs)
self.phone = phone
现在我不明白为什么在 Contact 和 AddressHolder 类中使用 super()。我的意思是当我们从父类继承但 Contact 和 AddressHolder 都没有从任何其他类继承时使用 super()。 (从技术上讲,它们继承自 object)。这个例子让我对 super() 的正确使用感到困惑
【问题讨论】:
-
afaik 它调用了 MRO 堆栈中的下一个项目 ....
标签: python inheritance python-3.x multiple-inheritance