python中面向对象的三大特征_自学Python5.6面向对象三大基本特征_多态

自学Python5.6-面向对象三大基本特征_多态

1.1  初识多态

多态指的是一类事物有多种形态。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语音里面,多态:

# 举例在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  多态性

多态性是指在不考虑实例类型的情况下使用实例

在面向对象方法中一般是这样表述多态性:

向不同的对象发送同一条消息(!!!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()

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

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

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值