目录(自我)和self.__dict__有什么区别



可能的重复:
Inspect.getMembers()vs __ -dict __。项目()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

任何人都可以解释一下吗?

对象的__dict__存储实例的属性。您实例的唯一属性是__conf__,因为它是__init__()方法中唯一的一组。dir()返回实例,其类和父类的"有趣"属性名称的列表。其中包括您的Test类中的ab,以及Base类中的__init__,以及其他一些属性Python自动添加。

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

最新更新