如果您希望当前模块的成员来自函数或类(其中vars()将做错误的事情),那么应该改用globals()。
但是,问题中的代码和单词不匹配。你说你想访问“myClass”中的对象,但是你发布的代码显然是在寻找myClass的子类,而不是它的内容。
为了补充星号的答案,在交互式提示下使用此选项的更多示例:>>> class Example:
... def method(): pass
...
>>> class SubExample(Example):
... pass
...
>>> class OverrideExample(Example):
... def method():
... pass
...
>>> globals()
{'OverrideExample': , '__builtins__':
'builtins' (built-in)>, 'Example': , '__name__': '__ma
in__', '__package__': None, '__doc__': None, 'SubExample':
xample'>}
>>> Example.__subclasses__()
[, ]
>>> vars(Example)
dict_proxy({'__dict__': , '__module__
': '__main__', '__weakref__': , 'm
ethod': , '__doc__': None})
>>> vars(SubExample)
dict_proxy({'__module__': '__main__', '__doc__': None})
>>> vars(OverrideExample)
dict_proxy({'__module__': '__main__', 'method': ,
'__doc__': None})
>>> vars(Example())
{}
>>> vars(SubExample())
{}
>>> vars(OverrideExample())
{}
注意在模块级、每个类对象和每个类实例上可见的内容之间的差异。
还要注意,对于给定的类定义,vars()不会告诉您任何继承的方法。它也不会告诉您通过类实例可用的方法。要正确地看到这两个属性,最好的方法是按照Noufal的建议执行,并遍历dir(),为每个属性调用getattr()。