1. 程式人生 > >pytho類繼承與訪問控制

pytho類繼承與訪問控制

() 語句塊 logs 順序 ccf 多繼承 自己 -s 私有屬性

類的三要素之一,繼承 從父類繼承,就可以直接擁有了父類的方法和屬性,減少冗余,增加復用,同時子類也可以定義自己的屬性和方法 繼承:class ****(需要繼承的類) 這樣就可以讓其子類獲得父類的方法與屬性 父類: 也稱為超類,和基類 子類: 也稱為派生類 具體定義如下: class 子類名(基類1,*,*,*): 語句塊 如果類定義中,沒有基類列表,等同於繼承自object,,在python3中,object是所有對象的基類 python支持多繼承,繼承也可以多級 特殊屬性和方法
__base__ 類的基類
__bases__顯示當前繼承的類
__mro__顯示當前繼承鏈
mro() 同上 調用方法 ini.mro( ) __subclasses__( ) 類的子類列表 調用方法 ini.__subclasses__( )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 類的屬性構造 : 繼承後的子類中若含有初始化函數__init__,就會覆蓋父類的__init__的數據; 但是可以調用父類的 __init__來執行父類init的方法,他們的調用順序不同,最後的結果也不同 私有的不可被覆蓋 子類中如果有同名方法或者函數,就會覆蓋父類的同名方法或者函數,但是私有屬性不會被覆蓋,哪個類的私有屬性,就會被那個類的實例給加到字典中,不同字典的私有屬性,加在實例中的數據名字也不一樣 總結: 雙下劃線的會被保存到實例的屬性中,可以使用property和方法,來讓用戶拿到這個私有屬性 從父類繼承,自己沒有的,就可以到父類中找 私有的都是不可以訪問的,但是本質上依然是改了名稱放在這個屬性所在類的__dict__,知道這個新名稱就可以直接找到這個隱藏的變量,這是一個慎用的方法 繼承時,共有的,子類和實例都可以隨意訪問;私有成員被隱藏,子類和實例不可直接訪問,當私有變量所在的類內的方法中可以訪問這個私有變量,(property,定義一個函數返回給self) 屬性查找順序,實例的__dict__ -->類 __dict__ 有繼承-->父類__dict__ 如果搜索這些地方後沒有找到就會拋異常,先找到就立即返回

pytho類繼承與訪問控制