83 Python中 深入淺出 繼承

2021-10-23 00:13:35 字數 1642 閱讀 4188

目錄繼承

語法格式

繼承是物件導向程式設計的重要特徵, 也是實現」**復用」的重要手段;

如果乙個新類繼承自乙個設計好的類, 就直接具備了已有類的特徵, 就大大降低了工作難度; 已有的類, 我們稱為」父類或者基類」, 新的類,  我們稱為」子類或者派生類」;

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中的編碼規則

在開始本部分的內容之前,首先有必要介紹兩個基本概念,乙個是序列化,乙個是反序列化。這兩個概念的定義在網上搜一下都很多的,但大多都講得比較晦澀,不太好理解,在這裡我會用比較通俗的文本來解釋,盡可能讓讀都朋友們一讀就明白是怎麼回事 序列化 是指將結構化的資料按一定的編碼規範轉成指定格式的過程 反序列化 ...