python学习笔记---多态

多态:一个接口多种实现。在继承的子类中对父类的方法进行了重写,随之产生了继承的一个好处就是多态,也就是同一事物表现出了多种形态。其实多态就是抽象化的过程,把一些具体事物的共同点抽象出来,在通过这个抽象的事物与具体的事物 进行对话

class Car(object):
    def run(self):
        print("car is running...")

class Toyota(Car):
    def run(self):
        print("toyota is running...")

class Benci(Car):
    def run(self):
        print("benci is running...")

这样就可以写一个接口,来调用不同类的run方法了
def func(obj):
obj.run()

func(Toyota())
func(Benci())

如果还想在从Car类中派生一个Dazhong的子类,同样可以用这个func接口

class Dazhong(Car):
    def run(self):
        print("Dazhong is running...")


func(Dazhong())

对于Dazhong()、Baoma()、Toyota()这样的变量,只要知道他是Car类型(可以用isinstance(Dazhong(),Car)),而无需关注他的子类型

其实只要定义的类中有这个run方法,就可以使用func这个接口,这就是作为动态语言的鸭子类型,不要求有严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子,那么它就可以认为是鸭子类型”
class Test(object):
def run(self):
print(“test is running…”)

func(Test())

总结:
多态有两种类型:
1.对象根据输入参数提供方法的不同实现(以上举的例子)
2.不同类型的对象可以使用相同的接口(比如python的内置功能,字符串,元组,列表都可以通过整数索引来访问。例:“asd”[0],(1,2,3)[0],[1,2,3][0])

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值