class Friends(): #定义一个类
def __init__(self):
self.name = 'wuq' #两个实例变量
self.gender = 'female'
def say_to_friend(): #有一个方法
print('hello %s'%self.name)
if __name__ == '__main__':
f = Friends() #创建实例
print(f.__dict__) #输出为{'name':'wuq','gender':'female'}
print(Friends.__dict__)
'''
输出一堆,
{'__modul__':'__main__','__init__':<function Friends.__init__ at 0x000000000022FE730>,...
'__doc__':None}所处模块...等
实际上,实例的__dict__仅存了与实例相关的实例属性.
实例的__dict__属性,也使得每个实例的实例属性不会相互影响,一个实例的实例属性就是和ta相关的那些属性.
f.message = 'hello my world' #在外部添加一个实例属性 动态的添加一个属性
f.fun = lambda :x #实例属性为一个函数
print(f.__dict__) #输出则为{'name':'wuq','gender':'female','message':'hello my world','fun':<function <lambda> at 0x00000000001F8E7B8>}最后的fun,函数为对应的内存地址
实例的__dict__存有与实例相关的实例变量和函数.
类的__dict__则是和实例共享的变量,函数(方法,类属性).注意,类的__dict__并不包含其父类的属性.
比如,直接print(object.__dict__)
子类的__dict__中不包含父类的__dict__.