显然,当AttributeError
从property
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
被提出还是刚改变的原始消息?为什么会发生这种情况?这是一个错误还是预期的行为?
相关: