如何解决为什么cls .__ name__没有出现在dir中?
dir
不保证返回所有可能的属性。从文档:
因为dir()的主要提供是为了方便在交互式提示符下使用,所以它尝试提供一组有趣的名称,而不是尝试提供一组严格或一致定义的名称,并且其详细行为可能会因版本而异。例如,当参数是类时,元类属性不在结果列表中。
解决方法
假设我有一个简单的课程:
class Foobar(object):
pass
如果使用dir(Foobar)
,我将得到以下输出:
['__class__','__delattr__','__dict__','__doc__','__format__','__getattribute__','__hash__','__init__','__module__','__new__','__reduce__','__reduce_ex__','__repr__','__setattr__','__sizeof__','__str__','__subclasshook__','__weakref__']
即使它没有出现在的输出中dir()
,我也可以访问__name__
:
Foobar.__name__
并得到Foobar
。
为什么Python会有这种行为?