可能的重复:
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
类中的a
和b
,以及Base
类中的__init__
,以及其他一些属性Python自动添加。
类属性存储在每个类的__dict__
中,因此dir()
正在执行的是继承层次结构并从每个类中收集信息。