Python子对象未访问父属性
因此,我正在用PyQt5编写一个程序,并利用QObject类。这是基本程序Python子对象未访问父属性,python,inheritance,pyqt5,multiple-inheritance,Python,Inheritance,Pyqt5,Multiple Inheritance,因此,我正在用PyQt5编写一个程序,并利用QObject类。这是基本程序 class Object(QObject): def __init__(self, parent=None): super(Object, self).__init__(parent) self.field = [] class Object2(Object): def __init__(self): super(Object, self).__in
class Object(QObject):
def __init__(self, parent=None):
super(Object, self).__init__(parent)
self.field = []
class Object2(Object):
def __init__(self):
super(Object, self).__init__()
self.field.append(1)
if __name__ == '__main__':
o = Object2()
但我得到了一个错误:
AttributeError: 'Object2' object has no attribute 'field'
我似乎找不到问题的原因。是python子类无法访问其父属性吗?您得到的错误是由于您传递到
super
的参数造成的。在Python 2中,它有两个参数:第一个参数是当前类(Object2
),第二个参数是当前实例(self
)
问题是您通过了父类而不是当前类
所以你想要:
class Object2(Object):
def __init__(self):
super(Object2, self).__init__() # Current class: Object2
self.field.append(1)
在Python3中,不再需要将这些参数传递到super
。因此,您只需执行以下操作:
class Object2(Object):
def __init__(self):
super().__init__()
self.field.append(1)
另见:
Python 2文档:
Python 3文档: