class中__dict__的理解,Python3
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__.