這篇文章主要介紹“python的類和實例的屬性有哪些”,在日常操作中,相信很多人在python的類和實例的屬性有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python的類和實例的屬性有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
松溪網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,松溪網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為松溪超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的松溪做網(wǎng)站的公司定做!
創(chuàng)建類時會創(chuàng)建它的命名空間,用來存儲類中定義的所有名字,這些名字稱為屬性。屬性有兩種:一是數(shù)據(jù),二是代碼塊(又稱函數(shù)或方法)。
創(chuàng)建實例時會創(chuàng)建它的命名空間,用來存放單向類指針和實例的屬性。實例可通過類指針訪問類的屬性,而類不能訪問實例的屬性。另外python支持多繼承,即類指針可以有多個。
訪問實例.屬性時,若在它的命名空間找不到,解釋器會通過類指針去類(父類、祖父類等)的命名空間里查找,若都沒有找到則報錯。
修改實例的屬性時,若在它的命名空間中有此屬性,則修改之。若實例無此屬性而類(父類、祖父類等)中有,則會在實例的命名空間中創(chuàng)建該屬性,并不會修改類(父類、祖父類)的屬性。
class Animal:kind = '動物'def __init__(self, name):self.name = namedef eat(self):print(f'{self.name}正在進食!')white_cat = Animal('白貓')white_cat.kind = '貓'print(white_cat.kind)print(Animal.kind)out:貓 動物
從上述案例中可以看到,修改實例white_cat的kind屬性,Animal的kind屬性不會變化。
self實質(zhì)是實例在內(nèi)存中的地址,在創(chuàng)建實例時會自動將它作為第一參數(shù)傳給類的__init__函數(shù)。
當然你也可以給它取別的名字,但改名會造成他人閱讀代碼很困惑,所以不建議改名!
查看類和實例的屬性有兩種方法:
dir(類名):列出屬性名列表。注意其中有很多是object類中定義的屬性。
類名.__dict__:列出屬性字典,key為屬性名,value為屬性值。
類和實例常用的特殊屬性
類名.__name__ 類的名字
類名.__doc__ 類的說明文檔
類名.__base__ 類的第一父類
類名.__bases__ 類所有父類構(gòu)成的元組
類名.__dict__ 類的屬性字典
類名.__module__ 類定義所在的模塊
實例.__class__ 實例對應(yīng)的類
這里舉一個特殊例子,通過實例的特殊屬性__class__來實例化另外一個實例:
class Animal:'''動物類'''kind = '動物'def __init__(self, name):self.name = namedef eat(self):print(f'{self.name}正在進食!')white_cat = Animal('白貓')white_cat.kind = '貓'black_dog = white_cat.__class__('黑狗')black_dog.kind = '狗'print(black_dog.kind)black_dog.eat()out:狗 黑狗正在進食!
到此,關(guān)于“python的類和實例的屬性有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)頁標題:python的類和實例的屬性有哪些
分享路徑:http://weahome.cn/article/jhoope.html