gpt4 book ai didi

Python子对象无法访问父属性

转载 作者:行者123 更新时间:2023-11-30 22:24:51 24 4
gpt4 key购买 nike

所以我正在 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 中,它需要 2 个参数:第一个参数是当前类 (Object2),第二个参数是当前实例 (self)。

问题是您已经通过了类,而不是当前类。

所以你想要:

class Object2(Object):
def __init__(self):
super(Object2, self).__init__() # Current class: Object2
self.field.append(1)

在 Python 3 中,不再需要将这些参数传递给 super。所以你只需这样做:

class Object2(Object):
def __init__(self):
super().__init__()
self.field.append(1)

另请参阅:

https://stackoverflow.com/a/5066411/7220776

Python 2 文档:https://docs.python.org/2/library/functions.html#super

Python 3 文档:https://docs.python.org/3/library/functions.html#super

关于Python子对象无法访问父属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47715753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com