自學Python5.6-面向對象三大基本特徵_多態

自學Python之路-Python基礎+模塊+面向對象
自學Python之路-Python網絡編程
自學Python之路-Python併發編程+數據庫+前端
自學Python之路-djangohtml

自學Python5.6-面向對象三大基本特徵_多態

1.1  初識多態前端

多態指的是一類事物有多種形態。python語言天生支持多態。python

# 舉例在其餘語言裏面代碼
class Alipay():
    def pay(self,money):
        print('已經用支付寶支付了%s元' % money)
class Applepay():
    def pay(self,money):
        print('已經用applepay支付了%s元' % money)
def pay(pay_obj,money):  # 統一支付入口,此時pay_obj只能調用Alipay()或者class Applepay(),可是隻能調用一種
    pay_obj.pay(money)  

在其餘語音裏面,多態應用:數據庫

# 舉例在其餘語言裏面,多態應用
class Payment:
    pass
class Alipay():
    def pay(self,money):
        print('已經用支付寶支付了%s元' % money)
class Applepay():
    def pay(self,money):
        print('已經用applepay支付了%s元' % money)
def pay(Payment.pay_obj,money):  # 統一支付入口,此時pay_obj調用Payment,多態
    pay_obj.pay(money)

在Python語音裏面,多態:  django

# 舉例在python語言裏面
class Alipay():
    def pay(self,money):
        print('已經用支付寶支付了%s元' % money)
class Applepay():
    def pay(self,money):
        print('已經用applepay支付了%s元' % money)
def pay(pay_obj,money):  # 統一支付入口,此時pay_obj接收全部參數
    pay_obj.pay(money)

舉例1:
好比動物有多種形態:人,狗,豬編程

import abc
class Animal(metaclass=abc.ABCMeta): #同一類事物:動物
    @abc.abstractmethod
    def talk(self):
        pass
class 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') 

舉例2:
文件有多種形態:文本文件,可執行文件網絡

import abc
class File(metaclass=abc.ABCMeta): #同一類事物:文件
    @abc.abstractmethod
    def click(self):
        pass
class Text(File): #文件的形態之一:文本文件
    def click(self):
        print('open file')
class ExeFile(File): #文件的形態之二:可執行文件
    def click(self):
        print('execute file')

1.2  多態性  

多態性是指在不考慮實例類型的狀況下使用實例併發

在面向對象方法中通常是這樣表述多態性:app

向不一樣的對象發送同一條消息(!!!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()  

 

多態指的是同一種事物的多種狀態:水這種事物有多種不一樣的狀態:冰,水蒸氣

多態性的概念指出了對象如何經過他們共同的屬性和動做來操做及訪問,而不需考慮他們具體的類。

...

相關文章
相關標籤/搜索