Python類的繼承與多態(tài)詳細(xì)介紹
概念
類(Class): 用來描述具有相同的屬性和方法的對(duì)象的集合。
類變量:類變量在整個(gè)實(shí)例化的對(duì)象中是公用的。類變量定義在類中且在函數(shù)體之外。類變量通常不作為實(shí)例變量使用。
類有一個(gè)名為 __init__() 的特殊方法(構(gòu)造方法),該方法在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用
self:self 代表的是類的實(shí)例,代表當(dāng)前對(duì)象的地址,而 self.class 則指向類。
類調(diào)用 Car.weight
實(shí)例化 car01=Car(5)
實(shí)例對(duì)象調(diào)用 car01.weght
類的創(chuàng)建
#創(chuàng)建小汽車類和客車類
class Car(object):
def __init__(self,weight): #實(shí)例化對(duì)象時(shí)傳入特有屬性
self.weight=weight
print("小汽車")
print(weight,"t") #定義類內(nèi)方法,功能是打印出實(shí)例化的小汽車的重量
def func(self):
print("小汽車的駕駛方法")
class Passenger_car(object):
def __init__(self,weight):
self.weight=weight
print("客車")
print(weight,"t")
def func(self):
print("客車的駕駛方法") 類的繼承
我們?cè)跇?gòu)造類時(shí),Python3默認(rèn)我們繼承了object這個(gè)基類,我個(gè)人理解object就是個(gè)空的類,可以不用管為何要在括號(hào)中寫上object,這是Python3的特性,在python2中如果你沒有寫object的話不會(huì)默認(rèn)繼承了object這個(gè)基類。
同樣的我們自己希望繼承的父類只需要把objetc改為我們自己定義的類名即可。子類中可以擁有父類中所有的公有屬性和方法,但是可以通過在變量名前加下劃線使其變?yōu)樗接?,這樣子類就不可以訪問父類中的成員了。
class Bus028(Passenger_car):
def __init__(self,weight): #對(duì)基類方法的重寫
self.weight=weight
print("28路公交車")
print(weight,"t")
def func(self): #對(duì)基類方法的重寫
print("28路公交車的駕駛方法")
#子類在父類中繼承過來了func方法,但是在父類中修改了原來方法的內(nèi)容多態(tài)的使用
以下三個(gè)公交車類的父類均為客車類,我們可以寫一個(gè)funcs方法使得每次調(diào)用funcs方法時(shí),傳入不同的對(duì)象以執(zhí)行不同的func方法,具體實(shí)現(xiàn)如下:
class Bus028(Passenger_car):
def __init__(self,weight):
self.weight=weight
print("28路公交車")
print(weight,"t")
def func(self):
print("28路公交車的駕駛方法")
class Bus906(Passenger_car):
def __init__(self,weight):
self.weight=weight
print("906路公交車")
print(weight,"t")
def func(self):
print("906路公交車的駕駛方法")
class BusB32(Passenger_car):
def __init__(self,weight):
self.weight=weight
print("B32路公交車")
print(weight,"t")
def func(self):
print("B32路公交車的駕駛方法")
def funcs(obj): #此處obj表示傳入一個(gè)實(shí)例化對(duì)象
obj.func()主函數(shù):
from demo01 import *
def main():
car01=Car(5) #例化為帶有重量為5t的一個(gè)具體對(duì)象
car01.func()
passenger_car01=Passenger_car(20) #例化為帶有重量為20t的一個(gè)具體對(duì)象
passenger_car01.func()
bus028_01=Bus028(15) #例化為帶有重量為15t的一個(gè)具體對(duì)象
bus906_01=Bus906(15) #例化為帶有重量為15t的一個(gè)具體對(duì)象
busB32_01=BusB32(15) #例化為帶有重量為15t的一個(gè)具體對(duì)象
funcs(bus028_01) #調(diào)用funcs方法
funcs(bus906_01)
funcs(busB32_01)
if __name__=="__main__":
main()可以看到,我將小汽車實(shí)例化為帶有重量為5t的一個(gè)具體對(duì)象,將客車實(shí)例化為帶有重量為20t的一個(gè)具體對(duì)象,將三個(gè)公交車實(shí)例化為帶有重量為15t的一個(gè)具體對(duì)象.
如上圖所示,我每次在調(diào)用funcs方法時(shí)都傳入了一個(gè)實(shí)例化對(duì)象,funcs根據(jù)不同的對(duì)象執(zhí)行相應(yīng)的內(nèi)部方法。
注:(我習(xí)慣上將方法讀作函數(shù),在以后的文章中,方法一律被函數(shù)代替)
到此這篇關(guān)于Python類的繼承與多態(tài)詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Python繼承與多態(tài)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python類的多重繼承問題深入分析
- Python 的類、繼承和多態(tài)詳解
- 淺析Python中的多重繼承
- 在python里面運(yùn)用多繼承方法詳解
- python中的多重繼承實(shí)例講解
- Python 多線程其他屬性以及繼承Thread類詳解
- Python多重繼承的方法解析執(zhí)行順序?qū)嵗治?/a>
- Python中的單繼承與多繼承實(shí)例分析
- python多重繼承實(shí)例
- Python面向?qū)ο缶幊讨^承與多態(tài)詳解
- Python實(shí)現(xiàn)帶參數(shù)與不帶參數(shù)的多重繼承示例
- Python中多層繼承的實(shí)現(xiàn)示例
相關(guān)文章
Python光學(xué)仿真學(xué)習(xí)處理高斯光束分布圖像
這篇文章主要為大家介紹了Python光學(xué)仿真學(xué)習(xí)之如何處理高斯光束的分布圖像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
PyTorch上實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN的方法
本篇文章主要介紹了PyTorch上實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
python+matplotlib演示電偶極子實(shí)例代碼
這篇文章主要介紹了python+matplotlib演示電偶極子實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
python正則表達(dá)式re.search()的基本使用教程
正則表達(dá)式是我們?nèi)粘i_發(fā)中必然會(huì)遇到的,下面這篇文章主要介紹了python正則表達(dá)式re.search()的基本使用教程,需要的朋友可以參考下2021-05-05
python反反爬蟲技術(shù)限制連續(xù)請(qǐng)求時(shí)間處理
這篇文章主要為大家介紹了python反反爬蟲技術(shù)限制連續(xù)請(qǐng)求時(shí)間處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

