自学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()  

 

多态指的是同一种事物的多种状态:水这种事物有多种不一样的状态:冰,水蒸气

多态性的概念指出了对象如何经过他们共同的属性和动做来操做及访问,而不需考虑他们具体的类。

...

相关文章
相关标签/搜索