为什么cls .__ name__没有出现在dir()中?

发布于 2021-01-29 17:33:02

假设我有一个简单的课程:

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会有这种行为?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    dir不保证返回所有可能的属性。从文档

    因为dir()的主要提供是为了方便在交互式提示符下使用,所以它尝试提供一组有趣的名称,而不是尝试提供一组严格或一致定义的名称,并且其详细行为可能会因版本而异。例如,当参数是类时,元类属性不在结果列表中。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看