1. 程式人生 > >class中__dict__的理解,Python3

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__.