Python 3.6:多型的實現
多型的作用不用多說,C++用如下條件來實現多型:
1 要有繼承
2 要有虛擬函式函式重寫
3 要有父類指標(父類引用)指向子類物件
實際上C++使用VPTR指標來完成這個事情,其是設計模式的基礎,軟體分層的基石。
最近看了一下Pyhon,很欣慰python3.6(因為我學的時候已經是3.6了)中支援不錯,基
本也是遵循C++的3個要點需要模組支援如下:
from abc import ABC,abstractmethod
程式碼如下:
抽象類:
實現類:
1 要有繼承
2 要有虛擬函式函式重寫
3 要有父類指標(父類引用)指向子類物件
實際上C++使用VPTR指標來完成這個事情,其是設計模式的基礎,軟體分層的基石。
最近看了一下Pyhon,很欣慰python3.6(因為我學的時候已經是3.6了)中支援不錯,基
本也是遵循C++的3個要點需要模組支援如下:
from abc import ABC,abstractmethod
程式碼如下:
抽象類:
點選(此處)摺疊或開啟
-
#在C++中使用如下3個條件實現多型
-
#1、虛擬函式從寫
-
#2、父類指標指向子類物件
-
#3、繼承
-
#python 3.6中也可以使用方便使用抽象類 from abc import ABC,abstractmethod
-
from abc import ABC, abstractmethod
-
-
class Handller(ABC): ##抽象類
-
@abstractmethod ##指定為介面函式 類似C++的純虛擬函式
-
def test(self):
- pass
實現類:
點選(此處)摺疊或開啟
-
import ABC
-
part = 0
-
#兩個類繼承來自同一個抽象類
-
class Child_1(ABC.Handller): #繼承
-
def __init__(self,b,c):
-
self.name = b
-
self.age = c
-
def test(self): #類似C++虛擬函式重寫函式
-
print("this is test {} {}".format(self.name,self.age))
-
class Child_2(ABC.Handller): #繼承
-
a = 0
-
def __init__(self,a):
-
self.name = a
-
def test(self): #類似C++虛擬函式重寫函式
-
print("this is test {}".format(self.name))
-
class Do_thing():
-
@staticmethod
-
def test_do_thing(handler): #統一呼叫介面
- handler.test()
-
-
a = Child_1('gaopeng',30)
-
b = Child_2('gaopeng')
-
Do_thing.test_do_thing(a) ##多型 父類指標指向子類物件
- Do_thing.test_do_thing(b) ##多型 父類指標指向子類物件
執行結果:
this is test gaopeng 30
this is test gaopeng
簡短測試但是麻雀雖小五臟俱全。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2151873/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《統計學習方法》的Python 3.6復現,實測可用Python
- Go 如何實現多型Go多型
- Python3.6實現12306火車票自動搶票Python
- 什麼是Java多型?如何實現Java多型?Java多型
- Java多型實現的必要條件Java多型
- IOS多型別Cell的tableView實現iOS多型型別View
- C++ 多型的實現及原理C++多型
- 實現多型多對多 幾個注意點多型
- Python物件導向多型實現原理及程式碼例項Python物件多型
- Python使用multiprocessing實現多程序Python
- aardio 實現封裝繼承多型封裝繼承多型
- C語言實現繼承多型C語言繼承多型
- Golang | Go語言多型的實現與interface使用Golang多型
- 淺談多型機制的意義及實現多型
- 用委託者模式實現的多型別Adapter模式多型型別APT
- Python3.6中那些很酷的特性Python
- Python中的繼承和多型Python繼承多型
- Python實現定時任務的多種方式Python
- 多頭注意力機制的python實現Python
- [MAUI程式設計]介面多型與實現UI程式設計多型
- linux下安裝python 3.6LinuxPython
- 物聯網學習教程—多型的實現機制多型
- 深入解析多型和方法呼叫在JVM中的實現多型JVM
- 虛擬函式表-C++多型的實現原理函式C++多型
- 使用pythonz建立新的Python環境(3.6)Python
- python 多型、組合、反射Python多型反射
- Python 繼承 和 多型Python繼承多型
- python實現獲取成員所在的多個位置Python
- 如何用Python實現多工版的udp聊天器PythonUDP
- 選擇 Python3.6 還是 Python 3.7Python
- python3.6print怎麼用Python
- pycharm如何安裝python3.6PyCharmPython
- Java 介面實現多型 -- 膝上型電腦綜合例項Java多型
- python3.6 使用pyinstaller 打包web程式的方法PythonWeb
- 分享 Python 3.6 中常用的幾個新特性Python
- Lua 列印table 實現型別python的repr用於table型別Python
- Python簡單實現多執行緒例子Python執行緒
- python網路-多工實現之協程Python