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
有人可以解释一下吗?
答案 0 :(得分:7)
对象的__dict__
存储实例的属性。您的实例的唯一属性是__conf__
,因为它是__init__()
方法中唯一设置的属性。 dir()
返回实例,其类及其父类的“有趣”属性的名称列表。其中包括a
课程中的b
和Test
以及__init__
课程中的Base
,以及Python自动添加的其他一些属性。
类属性存储在每个类的__dict__
中,因此dir()
正在做的是遍历继承层次结构并从每个类中收集信息。