Python 为什么这两个对象的id相同?
在下面的代码中,为什么父项和子项的id相同?它们不应该有所不同吗Python 为什么这两个对象的id相同?,python,python-3.x,class,inheritance,Python,Python 3.x,Class,Inheritance,在下面的代码中,为什么父项和子项的id相同?它们不应该有所不同吗 class Parent: def __init__(self): print(id(self)) class Child(Parent): def __init__(self): print(id(self)) super().__init__() Child() 您只创建了一个对象;它具有相同的ID,无论您是将其作为子对象查看,还是作为其继承的父对象查看。您只
class Parent:
def __init__(self):
print(id(self))
class Child(Parent):
def __init__(self):
print(id(self))
super().__init__()
Child()
您只创建了一个对象;它具有相同的ID,无论您是将其作为子对象查看,还是作为其继承的父对象查看。您只创建了一个对象;它具有相同的ID,无论您是将其作为子对象查看,还是作为其继承的父对象查看。根据定义,
self
是对实例的引用,因此,它必须始终是相同的。super
的使用掩盖了子对象的事实。初始化
实际上只是调用父对象。初始化
,将它作为参数接收的相同对象传递给父对象。初始化
。根据定义,self
是对实例的引用,所以它必须总是一样的。super
的使用掩盖了这样一个事实,即Child.\uuuu init\uuuu
实际上只是调用Parent.\uuu init\uuuuuu(self)
,将它作为参数接收到的相同对象传递给Parent.\uu init\uuu
。