Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python子对象未访问父属性_Python_Inheritance_Pyqt5_Multiple Inheritance - Fatal编程技术网

Python子对象未访问父属性

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

因此,我正在用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).__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文档: