Python子对象不访问父属性

时间:2017-12-08 13:52:14

标签: python inheritance pyqt5 multiple-inheritance

所以我在PyQt5中编写程序并使用QObject类。这是基本程序。

docker ps

但是我收到了这个错误:

enum Match {
    Regex,
    Wildcard,
    ContainsString,
}

// Don't: This way, Enumerate() can be called in a way
//         which does not make sense:
IEnumerable<string> Enumerate(string searchPattern = null,
                              Match match = Match.Regex,
                              SearchOption searchOption = SearchOption.TopDirectoryOnly);

// Better: Provide only overloads which cannot be mis-used:
IEnumerable<string> Enumerate(SearchOption searchOption = SearchOption.TopDirectoryOnly);
IEnumerable<string> Enumerate(string searchPattern, Match match,
                              SearchOption searchOption = SearchOption.TopDirectoryOnly);

我似乎无法找到问题的原因。是不是python子类无法访问它的父级属性?

1 个答案:

答案 0 :(得分:3)

您获得的错误是由于您传递给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