8、多态与多态性

本文深入探讨了多态性的概念,展示了如何通过抽象基类实现多态,并介绍了Python中鸭子类型的特性。通过具体的代码示例,读者可以了解多态如何简化对象的使用,以及鸭子类型在不同类间通用接口的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 多态
多态指的是同一种事物的多种形态

2 多态性:
可以在不用考虑对象具体类型的情况下而直接使用对象

优点:
归一化,简化对象的使用
# import abc
#
# class Animal(metaclass=abc.ABCMeta):
#     @abc.abstractmethod
#     def speak(self):
#         pass
#
#     @abc.abstractmethod
#     def run(self):
#         pass

#抽象基类:是用来指定规范,但凡继承该类的子都必须实现speak和run,而名字必须叫speak和run
#注意:不能实例化抽象基类
# Animal()


# class People(Animal):
#     def speak(self):
#         print('say hello')
#
#     def run(self):
#         pass
#
# class Dog(Animal):
#     def speak(self):
#         print('汪汪汪')
#
#     def run(self):
#         pass
#
# class Pig(Animal):
#     def speak(self):
#         print('哼哼哼哼哼')
# #
#     def run(self):
#         pass
# #
# obj1=People()
# obj2=Dog()
# obj3=Pig()
#
#obj1,obj2,obj3都是动物
# obj1.speak()
# obj2.speak()
# obj3.speak()

#
# def speak(animal):
#     animal.speak()
#
#
# speak(obj1)
# speak(obj2)
# speak(obj3)


# obj1=[1,2,3]
# obj2='hello'
# obj3={'x':1}
#
# print(obj1.__len__())
# print(obj2.__len__())
# print(obj3.__len__())
#
#
# print(len(obj1))
# print(len(obj2))
# print(len(obj3))



# python崇尚鸭子类型


class Txt:
    def read(self):
        print('txt read')

    def write(self):
        print('txt write')


class Process:
    def read(self):
        print('Process read')

    def write(self):
        print('Process write')


class Disk:
    def read(self):
        print('Disk read')

    def write(self):
        print('Disk write')


obj1=Txt()
obj2=Process()
obj3=Disk()



obj1.read()
obj1.write()

obj2.read()
obj2.write()

obj3.read()
obj3.write()

 

转载于:https://www.cnblogs.com/z-x-y/p/10047498.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值