通过 __dict__ 访问 Python 实例变量- 这样做是否错误?
如果我想查看一个对象的实例变量列表,我可以使用 myObject.__dict__.keys()
这个方法。我想用这个属性来打印出对象的所有实例变量。不过我有点犹豫,因为 __dict__
是一个“秘密”属性,我不太明白这个脚注是什么意思。
那么,使用 myObject.__dict__
这样做是错的吗?
4 个回答
4
你可以使用 dir
这个函数来列出一个对象的所有属性。
6
这个脚注是指一个模块的__dict__
属性。一个对象的__dict__
属性没有这样的警告(文档)。
6
这个脚注的意思是,你不应该直接访问 __dict__
,而是应该先检查你想要的功能或行为是否可用。
所以,不要像这样做:
if "__some_attribute__" in obj.__dict__:
# do stuff
而是应该这样做:
try:
obj.some_action_i_want_to_do(...)
except AttributeError:
# doesn't provide the functionality I want
这样做的原因是,不同的对象可能会对某个操作提供不同的内部引用,但仍然能给你想要的结果。
如果你想列出一些“内部信息”,方便调试和查看当前对象的情况,那么使用 dir()
是正确的方法。