詳細介紹Python類的繼承與多型
導讀 | 大家好,本篇文章主要講的是Python類的繼承與多型詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽 |
類(Class): 用來描述具有相同的屬性和方法的物件的集合。
類變數:類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。
類有一個名為 __init__() 的特殊方法(構造方法),該方法在類例項化時會自動呼叫
self:self 代表的是類的例項,代表當前物件的地址,而 self.class 則指向類。
類呼叫 Car.weight
例項化 car01=Car(5)
例項物件呼叫 car01.weght
#建立小汽車類和客車類 class Car(object): def __init__(self,weight): #例項化物件時傳入特有屬性 self.weight=weight print("小汽車") print(weight,"t") #定義類內方法,功能是列印出例項化的小汽車的重量 def func(self): print("小汽車的駕駛方法") class Passenger_car(object): def __init__(self,weight): self.weight=weight print("客車") print(weight,"t") def func(self): print("客車的駕駛方法")
我們在構造類時,Python3預設我們繼承了object這個基類,我個人理解object就是個空的類,可以不用管為何要在括號中寫上object,這是Python3的特性,在python2中如果你沒有寫object的話不會預設繼承了object這個基類。
同樣的我們自己希望繼承的父類只需要把objetc改為我們自己定義的類名即可。子類中可以擁有父類中所有的公有屬性和方法,但是可以透過在變數名前加下劃線使其變為私有,這樣子類就不可以訪問父類中的成員了。
class Bus028(Passenger_car): def __init__(self,weight): #對基類方法的重寫 self.weight=weight print("28路公交車") print(weight,"t") def func(self): #對基類方法的重寫 print("28路公交車的駕駛方法") #子類在父類中繼承過來了func方法,但是在父類中修改了原來方法的內容
以下三個公交車類的父類均為客車類,我們可以寫一個funcs方法使得每次呼叫funcs方法時,傳入不同的物件以執行不同的func方法,具體實現如下:
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表示傳入一個例項化物件 obj.func()
from demo01 import * def main(): car01=Car(5) #例化為帶有重量為5t的一個具體物件 car01.func() passenger_car01=Passenger_car(20) #例化為帶有重量為20t的一個具體物件 passenger_car01.func() bus028_01=Bus028(15) #例化為帶有重量為15t的一個具體物件 bus906_01=Bus906(15) #例化為帶有重量為15t的一個具體物件 busB32_01=BusB32(15) #例化為帶有重量為15t的一個具體物件 funcs(bus028_01) #呼叫funcs方法 funcs(bus906_01) funcs(busB32_01) if __name__=="__main__": main()
可以看到,我將小汽車例項化為帶有重量為5t的一個具體物件,將客車例項化為帶有重量為20t的一個具體物件,將三個公交車例項化為帶有重量為15t的一個具體物件.
如上圖所示,我每次在呼叫funcs方法時都傳入了一個例項化物件,funcs根據不同的物件執行相應的內部方法。
注:(我習慣上將方法讀作函式,在以後的文章中,方法一律被函式代替)
到此這篇關於Python類的繼承與多型詳細介紹的文章就介紹到這了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2900665/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java中的類繼承與多型Java繼承多型
- 繼承+多型+抽象類繼承多型抽象
- 淺析 Python 的類、繼承和多型Python繼承多型
- 繼承與多型繼承多型
- static變數是否能繼承詳細介紹變數繼承
- TypeScript(5)類、繼承、多型TypeScript繼承多型
- JavaScript 的繼承與多型JavaScript繼承多型
- Javascript的繼承與多型JavaScript繼承多型
- java繼承與多型Java繼承多型
- Python 繼承 和 多型Python繼承多型
- python 多繼承詳解Python繼承
- Python中的繼承和多型Python繼承多型
- Python 簡明教程 --- 21,Python 繼承與多型Python繼承多型
- 多繼承 與 多重繼承繼承
- Java 繼承與多型實驗Java繼承多型
- c++菱形繼承、多型與類記憶體模型C++繼承多型記憶體模型
- python 類的繼承與過載Python繼承
- Hibernate繼承對映多型的詳解繼承多型
- 繼承和多型繼承多型
- 多型和繼承多型繼承
- Python類的繼承Python繼承
- java泛型詳細介紹Java泛型
- OOP的多型和繼承OOP多型繼承
- C++多繼承的細節C++繼承
- c# 中的封裝、繼承、多型詳解C#封裝繼承多型
- Java的類與繼承Java繼承
- 【Python】python類的繼承Python繼承
- 類的繼承_子類繼承父類繼承
- javascript類式繼承設計模式簡單介紹JavaScript繼承設計模式
- python字典詳細介紹Python
- Java:類與繼承Java繼承
- pyhanlp 文字聚類詳細介紹HanLP聚類
- .NET Core CSharp初級篇 1-6 類的多型與繼承CSharp多型繼承
- C中的繼承和多型繼承多型
- 繼承 基類與派生類繼承
- 史上最為詳細的javascript繼承JavaScript繼承
- 什麼是整型型別?Python整型詳細介紹型別Python
- javascript繼承的實現方式介紹JavaScript繼承