<分区>
来自 Python3 的文档 super()
“返回一个代理对象,该对象将方法调用委托(delegate)给类型的父类或兄弟类。”这是什么意思?
假设我有以下代码:
class SuperClass():
def __init__(self):
print("__init__ from SuperClass.")
print("self object id from SuperClass: " + str(id(self)))
class SubClass(SuperClass):
def __init__(self):
print("__init__ from SubClass.")
print("self object id from SubClass: " + str(id(self)))
super().__init__()
sc = SubClass()
我从这里得到的输出是:
__init__ from SubClass. self object id from SubClass: 140690611849200 __init__ from SuperClass. self object id from SuperClass: 140690611849200
这意味着在 super().__init__()
行中,super()
返回当前对象,然后将其隐式传递给父类(super class)' __init__()
方法。这是准确的还是我在这里遗漏了什么?
简单来说,我想了解以下内容:
当 super().__init__()
运行时,
- 传递给
__init__()
的到底是什么以及如何传递的?我们在super()
上调用它,因此根据我目前对 Python 的了解,无论返回什么都应该传递给__init__()
方法。 - 为什么我们不必将
self
传递给super().__init__()
?