使用__dict __-访问Python实例变量是不是错了?

san*_*ans 15 python

如果我想访问对象的实例变量列表,我可以调用myObject.__dict__.keys().我想使用此属性打印出对象的所有实例变量.我这样做是犹豫不决的,因为这__dict__是一个"秘密"属性,我不明白这个脚注的意思.

那么使用它是错误的myObject.__dict__吗?

uno*_*ode 6

脚注的含义是您不应该尝试__dict__直接访问,而是检查您想要的功能/行为是否可用.

所以不要做类似的事情:

if "__some_attribute__" in obj.__dict__:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

你应该这样做:

try:
    obj.some_action_i_want_to_do(...)
except AttributeError:
    # doesn't provide the functionality I want
Run Code Online (Sandbox Code Playgroud)

原因是因为不同的对象可能提供对特定操作的不同内部引用,但仍提供所需的输出.

如果要为调试和检查当前对象列出"内部",那么这dir()是正确的方法.


Ray*_*Ray 5

该脚注是参考模块__dict__属性.对象的属性不带有这样的警告(文档).__dict__