为什么Exception类不填充这个属性?

2024-04-20 07:34:39 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么Exception(及其派生)类不像其他类一样将实例属性填充到__dict__特殊属性上?在

例如,从object类派生的类将实例属性存储在__dict__属性上:

class TestClass(object):
def __init__(self, *args):
    self.args = args

test = TestClass(1,2,3)
print(test.__dict__)
print(test.args)

>>>> {'args': (1, 2, 3)}
>>>> (1, 2, 3)

但是,Exception类有不同的行为:

^{pr2}$

我希望能够在__dict__特殊属性中看到对象的所有属性,所以我对此感到困惑。在


Tags: 对象实例testself属性objectinitdef
1条回答
网友
1楼 · 发布于 2024-04-20 07:34:39

在Python 2.7中,至少:

>>> type(Exception.args)
<type 'getset_descriptor'>

args不是一个实例变量;它是一个描述符,这意味着它是一个当您试图访问Exception().args时调用的函数。在

相关问题 更多 >