dir(self)和self .__ dict__之间有什么区别

时间:2012-11-09 05:59:53

标签: python class

  

可能重复:
  inspect.getmembers() vs __dict__.items() vs dir()

class Base():
    def __init__(self, conf):
        self.__conf__ = conf
        for i in self.__dict__:
            print i,"dict"
        for i in dir(self):
            print i,"dir"

class Test(Base):
      a = 1
      b = 2

t = Test("conf")

输出结果为:

__conf__ dict
__conf__ dir
__doc__ dir
__init__ dir
__module__ dir
a dir
b dir

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:7)

对象的__dict__存储实例的属性。您的实例的唯一属性是__conf__,因为它是__init__()方法中唯一设置的属性。 dir()返回实例,其类及其父类的“有趣”属性的名称列表。其中包括a课程中的bTest以及__init__课程中的Base,以及Python自动添加的其他一些属性。

类属性存储在每个类的__dict__中,因此dir()正在做的是遍历继承层次结构并从每个类中收集信息。