【发布时间】:2017-11-29 06:47:52
【问题描述】:
我已经定义了一个类,需要把它的大部分属性交给一个函数来处理。所以我想与其制造一个巨大的混乱并命名它们,我会做processSomething(vars(self)) 并交出一本包含所有属性和值的漂亮字典。
但我发现几乎所有的属性都不见了。
我已经停止了调试器中的代码并运行了一些测试:
>>> vars(self).keys()
dict_keys(['date_expire', 'tokenUrl', 'settings', 'requestSession', 'ttlDays'])
这些是 5 个。虽然我预计有大约 20 个属性,但根据 __slots__ 我的类在这里的定义:
__slots__ = (
'token', # the invitation-token to load the username with
'request', # the http-request which is currently being serviced
'inhibit',
#... many lines deleted
'templateObj', # an instance of myMail.template.Template
'emailBody', # what will be sent via SMTP
'warningsAr', # messages for the client
)
我可以在调试器窗口中看到属性并且可以直接访问它们。我已阅读 manual of vars() 并找不到任何开关。有趣的是,dir(self) 显示所有属性名称,但没有值。所以我不能用那个。但我认为 vars 和 dir 应该显示相同?
我想我会建立一个解决方法,但我真的很想了解这里发生了什么。你能帮忙吗?
【问题讨论】:
标签: python python-3.x slots