Python--物件導向之多態與多態性

來源:互聯網
上載者:User

標籤:運算   obj   執行   方式   src   不同   ima   執行個體   動態綁定   

一、多態

多態指的是一類事物有多種形態

動物有多種形態:人,狗,豬

import abcclass Animal(metaclass=abc.ABCMeta): #同一類事物:動物    @abc.abstractmethod    def talk(self):        passclass People(Animal): #動物的形態之一:人    def talk(self):        print(‘say hello‘)class Dog(Animal): #動物的形態之二:狗    def talk(self):        print(‘say wangwang‘)class Pig(Animal): #動物的形態之三:豬    def talk(self):        print(‘say aoao‘)

檔案有多種形態:文字檔,可執行檔

import abcclass File(metaclass=abc.ABCMeta): #同一類事物:檔案    @abc.abstractmethod    def click(self):        passclass Text(File): #檔案的形態之一:文字檔    def click(self):        print(‘open file‘)class ExeFile(File): #檔案的形態之二:可執行檔    def click(self):        print(‘execute file‘)
二、多態性

1.什麼事多態動態綁定(在繼承的背景下使用時,有時也成為多態性)

多態性是指在不考慮執行個體類型的情況下使用執行個體

在物件導向方法中一般是這樣表述多態性:向不同的對象發送同一條訊息(!!!obj.func():是調用了obj的方法func,又稱為向obj發送了一條訊息func),不同的對象在接收時會產生不同的行為(即方法)。也就是說,每個對象可以用自己的方式去響應共同的訊息。所謂訊息,就是調用函數,不同的行為就是指不同的實現,即執行不同的函數。比如:老師.下課鈴響了(),學生.下課鈴響了(),老師執行的是下班操作,學生執行的是放學操作,雖然二者訊息一樣,但是執行的效果不同
詳細解釋

多態性分為靜態多態性和動態多態性

  靜態多態性:如任何類型都可以用運算子+進行運算

  動態多態性:如下

peo=People()dog=Dog()pig=Pig()#peo、dog、pig都是動物,只要是動物肯定有talk方法#於是我們可以不用考慮它們三者的具體是什麼類型,而直接使用peo.talk()dog.talk()pig.talk()#更進一步,我們可以定義一個統一的介面來使用def func(obj):    obj.talk()

2.為什麼要用

Python--物件導向之多態與多態性

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.