为什么从QObject的属性引发的AttributeError的回溯有缺陷?

时间:2017-02-14 22:22:33

标签: python python-2.7 qt qt4 pyqt4

显然,当AttributeErrorproperty QObject引出时,回溯包含一个不同的AttributeError,而不是一个引用该属性本身。{/ p >

运行以下代码

import sys

from PyQt4 import QtCore


class MyObject(QtCore.QObject):
    def __init__(self, parent=None):
        super(MyObject, self).__init__(parent)

    @property
    def invalid_property(self):
        raise AttributeError('test')
        # raise TypeError('test')

    def invalid_method(self):
        raise AttributeError('test')

obj = MyObject()
obj.invalid_property
# obj.invalid_method()

给出

Traceback (most recent call last):
  File "test.py", line 19, in <module>
    obj.invalid_property
AttributeError: 'MyObject' object has no attribute 'invalid_property'

原来的AttributeError被追溯中的另一个替换。

我尝试了相同的提升TypeError,但效果很好,并且从传统方法中提升AttributeError也很好。

如果我继承object而不是QObject,那么原始的AttributeError也会出现在追溯中。

那么这里发生了什么?是一个不同的AttributeError被提出还是刚改变的原始消息?为什么会发生这种情况?这是一个错误还是预期的行为?

相关:

0 个答案:

没有答案