目錄繼承
語法格式
繼承是物件導向程式設計的重要特徵, 也是實現」**復用」的重要手段;
如果乙個新類繼承自乙個設計好的類, 就直接具備了已有類的特徵, 就大大降低了工作難度; 已有的類, 我們稱為」父類或者基類」, 新的類, 我們稱為」子類或者派生類」;
python支援多重繼承, 乙個子類可以繼承多個父類, 繼承的語法格式如下:
class 子類類名(父類1[,父類2,...]):
類體如果在類定義中沒有指定父類, 則預設父類是object 類, 也就是說, object是所有類的父類, 裡面定義了一些所有類共有的預設實現, 比如: __new__();
私有的屬性和方法可以繼承, 但不能直接使用;
定義子類時, 必須在其建構函式中呼叫父類的建構函式; 呼叫格式如下:
#測試繼承的基本使用
class person:
def __init__(self,name,age):
self.name = name
self.__age = age
def say_age(self):
print(self.name,'的年齡是:',self.__age)
#student-->person-->object類
class student(person): #繼承person父類
def __init__(self,name,age,score):
self.score = score
# 建構函式中包含呼叫父類建構函式;根據需要,不是必須,子類並不會自動呼叫父類的__init__(), 我們必須顯示的呼叫它
person.__init__(self,name,age)
s1 = student('張三',19,99)
s1.say_age()
print(s1._person__age) #父類私有屬性可以繼承,但不能直接呼叫,需要這樣呼叫
print(dir(s1))
輸出:d:\wwwroot\pyiteam\venv\scripts\python.exe d:/wwwroot/pyiteam/mypro_obj/mypy02.py
張三 的年齡是: 19
19['_person__age', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'say_age', 'score']
process finished with exit code 0
深入淺出理解JS原型鏈繼承
js在es6以前還沒有class的概念,但卻存在著物件導向的思想。在js中,可通過建構函式的形式來建立物件,並使用各種方式實現繼承,其中原型鏈繼承便是一種普遍的方法 先來看乙個例子 function parent function child child.prototype new parent f...
深入淺出Google ProtoBuf中的編碼規則
在開始本部分的內容之前,首先有必要介紹兩個基本概念,乙個是序列化,乙個是反序列化。這兩個概念的定義在網上搜一下都很多的,但大多都講得比較晦澀,不太好理解,在這裡我會用比較通俗的文本來解釋,盡可能讓讀都朋友們一讀就明白是怎麼回事 序列化 是指將結構化的資料按一定的編碼規範轉成指定格式的過程 反序列化 ...
深入淺出Google ProtoBuf中的編碼規則
在開始本部分的內容之前,首先有必要介紹兩個基本概念,乙個是序列化,乙個是反序列化。這兩個概念的定義在網上搜一下都很多的,但大多都講得比較晦澀,不太好理解,在這裡我會用比較通俗的文本來解釋,盡可能讓讀都朋友們一讀就明白是怎麼回事 序列化 是指將結構化的資料按一定的編碼規範轉成指定格式的過程 反序列化 ...