python 多态

本文探讨Python的多态特性,包括其定义、如何实现以及为何Python被称为天生多态。此外,还深入讨论了鸭子类型的概念,其在Python中的应用及优缺点。
部署运行你感兴趣的模型镜像

面向对象语言的三大特性

1、继承

2、多态

5、封装

一、多态

1、定义

一个类的多种形态,如一个文件的格式可以是txt、word、excel等

2、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(money)

pay()

二、鸭子类型

1、定义

两个类相似,并且不是继承的兄弟关系

2、优点

解耦,松耦合;两个类互相独立,互不影响;没有规范要求

3、缺点

太随意,全靠自觉

4、例子

list和tuple,类型相似,但是没有使用继承,而是使用鸭子类型

 

PS:

1、python主推鸭子类型

2、接口类和抽象类在python中是不必要条件

3、多态在python中也不是很重要,因为python天生多态

 

转载于:https://www.cnblogs.com/wt7018/p/10933556.html

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python 多态(Polymorphism)是面向对象编程中的一个重要概念,它允许不同的对象对同一方法调用产生不同的行为。在 Python 中,多态主要通过**方法重写(Method Overriding)**和**鸭子类型(Duck Typing)**来实现。 ### 1. **多态的实现方式** - **方法重写(继承多态)**:子类可以重写父类的方法,使得不同的子类对象调用相同的方法时表现出不同的行为。 - **鸭子类型(Duck Typing)**:Python 不关心对象的类型,而是关注对象是否具有某个方法或行为。如果对象的行为符合预期,就可以调用对应的方法。 ### 2. **示例代码** ```python class Animal: def speak(self): pass class Dog(Animal): def speak(self): return "Woof!" class Cat(Animal): def speak(self): return "Meow!" def make_sound(animal): print(animal.speak()) # 不同的对象调用相同的方法,产生不同的行为 dog = Dog() cat = Cat() make_sound(dog) # 输出 "Woof!" make_sound(cat) # 输出 "Meow!" ``` **鸭子类型示例**: ```python class Duck: def quack(self): return "Quack!" class Person: def quack(self): return "I can quack like a duck!" def sound_maker(obj): print(obj.quack()) duck = Duck() person = Person() sound_maker(duck) # 输出 "Quack!" sound_maker(person) # 输出 "I can quack like a duck!" ``` ### 3. **Python 多态的特点** - 不需要显式继承接口或抽象类。 - 动态语言特性使得多态更加灵活。 - 适用于任何具有相同方法的对象,即使它们没有继承关系。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值