python面向对象三大特性-多态

概念:一个类所延伸的多种形态。调用时的多种形态。

class Animal(object):
    def jiao(self):
        pass

class Dog(Animal):
    def jiao(self):
        print("wangwangwang")

class Cat(Animal):
    def jiao(self):
        print("miaomiaomiao")

def test(obj):
    obj.jiao()

d = Dog()
c = Cat()
test(d)
test(c)

        多态在python中的体现:

                鸭子类型:动态类型的一种风格,只要一个对象,会走、会游泳、会叫;那它就可以当做一个鸭子进行处理。关注点在于对象的“行为和属性”;而非对象的类型。

                多以,在python中,没有真正意义上的多态,也不需要多态。

补充:

        抽象类:一个抽象出的类,并不是某个具体化的类,不能直接创建实例化的类,创建会报错。

        抽象方法:抽象出来的一个方法,不具备具体实现,不能直接调用。子类不实现会报错。

        python中的实现:无法直接实现,需要借助一个模块,import abc->设置类的元类为abc.ABCMeta->使用装饰器修饰抽象方法@abc.abstractmethod。

        抽象类中如果有抽象方法,子类一定要实现抽象方法,不然会报错。

import abc

class Animal(object, metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def jiao(self):
        pass
    @abc.abstractclassmethod
    def test(cls):
        pass
class Dog(Animal):
    def jiao(self):
        print("wangwangwang")
    @classmethod
    def test(cls):
        print("xxxxx")

class Cat(Animal):
    def jiao(self):
        print("miaomiaomiao")

def test(obj):
    obj.jiao()

# d = Dog()
# c = Cat()
# test(d)
# test(c)

# a = Animal()
# a.jiao()

d = Dog()
d.jiao()
d.test()


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值