理解 Python 中的多态性

理解 python 中的多态性

本文深入解释了 python 中的多态性,强调了它在面向对象编程中的作用。

多态性是一个希腊词,意思是多种形状或多种形式。多态性是面向对象编程(oop)中的一个基本概念。 python 是多态的,这意味着 python 中的对象能够采取多种形式。简而言之,多态性允许我们以多种不同的方式执行相同的操作。 (vishal,2021)此外,在 python 中,一切都是对象/类。 “guido van rossum 根据“一切都是一流”的原则设计了该语言。他写道:“我对 python 的目标之一是让所有对象都是“一流的”。我的意思是,我希望所有可以用该语言命名的对象(例如整数、字符串、函数、类、模块、方法等)都具有平等的地位。” (klein,2022,1.面向对象编程)

要理解多态性,了解“鸭子类型”概念很重要。“如果它看起来像鸭子并且嘎嘎叫起来像鸭子,那么它可能是鸭子。”在编程中,这意味着对象的适用性是由某些方法和属性的存在决定的,而不是对象的实际类型。在python中,鸭子类型是一个概念,其中对象的“适用性”由以下因素决定:某些方法或属性的存在,而不是对象的实际类型。换句话说,python 中的多态性意味着单个运算符、函数或类方法可以根据上下文具有多种形式/行为。

1。运算符多态
或者运算符重载允许像 这样的运算符根据操作数类型执行不同的操作。 (杰根森,2022)

例如:
两个整数

int_1 = 10int_2 = 45print(str(int_1 + int_2))>>>55

两根弦

str_1 = “10”str_2 = “45”print(str_1 + str_2)>>>1045

2。函数多态
像 len() 这样的内置函数可以作用于多种数据类型(例如字符串、列表),并为每种类型提供适当的测量长度。

例如:

str_1 = "polymorphic"print(str(len(str_1)))>>>11my_lst = [1, 2, 3, 4, 5]print(str(len(my_lst))>>>5

3。类方法多态
允许子类覆盖从父类继承的方法。

例如:

#  parent classclass animal:    def make_sound(self):        pass# child classclass dog(animal):    def make_sound(self):        return "woof!"# child classclass cat(animal):    def make_sound(self):        return "meow!"    def animal_sound(animal):        print(animal.make_sound())
dog = dog()cat = cat()animal_sound(dog)  # output: woof!animal_sound(cat)  # output: meow!

4。独立的类还可以定义具有相同名称但行为不同的方法。

立即学习“Python免费学习笔记(深入)”;

例如:

def enter_obj(obj):    return obj.action() # independent classclass animal:    def __init__(self, food):        self.food = food    # same name as the circle method different functionality    def action(self):        print(f"eats {self.food}")# independent classclass circle:        def __init__(self, radius):            self.radius = radius        # same name as the animal method different functionality        def action(self):            return 3.14 * (self.radius ** 2)
cow = Animal("grass")circ = Circle(7)enter_obj(cow)print(str(enter_obj(circ))) >>> eats grass 153.86

总之,多态性是python的一个强大特性。它允许对象呈现多种形式并根据上下文表现出不同的行为。 python 的鸭子类型通过关注某些方法或属性的存在而不是对象的实际类型来实现多态性。

参考文献:

jergenson, c.(2022 年,5 月 31 日)._ 什么是 python 中的多态性?_。有教育意义。 https://www.educative.io/blog/what-is-polymorphism-python

klein, b.(2022 年,2 月 1 日)。 面向对象编程/opp。 python 课程。 https://python-course.eu/oop/object-oriented-programming.php

维沙尔。 (2021 年,10 月 21 日)。 python 中的多态性。 pynative。 https://pynative.com/python-polymorphism/

最初于 2024 年 8 月 19 日发表于 understanding polymorphism in python – medium。

以上就是理解 Python 中的多态性的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 18:42:22
下一篇 2025年12月13日 18:42:34

相关推荐

  • Python 中的异常处理

    本文探讨了 python 中用于处理异常的各种技术,包括 try- except 块、自定义异常以及异常链接和丰富等高级功能。 python 提供了一个强大的异常处理框架,它不仅允许程序员实现防止崩溃的代码,而且还提供反馈并保持应用程序稳定性。此外,它使开发人员能够使用 try- except 块、…

    好文分享 2025年12月13日
    000
  • python爬虫怎么登录账号

    Python 爬虫登录账号的方法:获取登录页面并解析表单数据。设置浏览器设置,禁用 JavaScript 和图片加载,提高爬虫速度。构造登录请求,包含表单字段的名称、值和会话令牌。发送登录请求并解析登录结果页面。查找表示成功登录的标记或消息。如果登录成功,存储会话令牌或 cookie 以供后续请求使…

    2025年12月13日
    000
  • python爬虫怎么导入文件

    在 Python 爬虫中导入文件,可使用 import 语句导入模块或文件;使用 from…import 语句导入特定类、函数或变量;指定绝对或相对路径导入非当前脚本中的文件。注意:确保所需文件位于 Python 可访问路径中,本地定义的同名类或函数优先使用,且为保证性能应避免导入不必要模块。 如何…

    2025年12月13日
    000
  • grid在python中的含义

    在 Python 中,grid 是一个用于组织和显示数据的网格结构,由横向和纵向的线组成。它有以下类型:NumPy ndarray、Pandas DataFrame 和 Matplotlib GridSpec。网格用于组织数据、可视化数据、进行数据分析和创建用户界面。可以使用多种方法创建和操作网格,…

    2025年12月13日
    000
  • python中entry的用法

    Entry 小部件是 tkinter 中用于获取单行文本输入的控件。可用于设置属性,如宽度、可见性、状态和绑定变量。事件处理包括回车、按键松开、获取/失去焦点。示例代码演示了如何在 GUI 中使用 Entry 小部件,带标签和输入框。 Python tkinter 中 Entry 小部件 Entry…

    2025年12月13日
    000
  • python中label用法

    Python 中 label 可用于标记代码块,以便轻松跳转。其用法包括:定义 label:label:使用 goto 语句跳转到 label:goto my_label Python 中 label 用法 定义 label 是 Python 中用于标记代码块的特殊关键字。它允许开发者轻松地跳转到代…

    2025年12月13日
    000
  • python中math用法

    Python 的 math 模块提供各种数学函数,包括三角函数、指数、对数、统计和常规数学函数。它通过导入模块和使用点号语法调用函数来使用。实例包括计算三角形面积和复利金额,展示了 math 模块在 Python 开发中的实用性。 Python 中的 math 模块 Python 中的 math 模…

    2025年12月13日
    000
  • main在python中的用法

    Python 中的 main() 函数是程序的入口点,是程序开始执行的第一个函数。优点:模块化、可测试性。使用场景:希望将程序逻辑与模块导入分开或在程序启动时执行特定任务。语法:def main(): # 程序逻辑。 main() 在 Python 中的用法 简介 main() 函数是 Python…

    2025年12月13日
    000
  • python中常见问题

    Python 中常见问题包括:变量未定义错误:定义变量并赋值可解决。索引超出范围错误:确保索引在序列长度范围内。名称错误:导入模块并正确拼写函数、类或模块名称。类型错误:确保操作数类型兼容。值错误:使用适合操作的值。语法错误:检查代码语法并正确结束语句。内存错误:优化代码或使用更大内存的计算机。At…

    2025年12月13日
    000
  • Python中addict库使用Dict的类

    利用addict库,可以轻松在Python中创建可像类访问的字典(dict),从而简化字典的使用:导入addict库中的Dict类,创建Dict对象。采用点运算符(.)对象化访问字典键,如同访问类属性。支持链式调用,方便访问嵌套数据结构。提供简洁语法,提高代码可读性。避免KeyError异常,优雅地…

    2025年12月13日
    000
  • YOLOv8模型pytorch格式转为onnx格式的步骤详解

    PyTorch YOLOv8模型可通过以下步骤转换为ONNX格式:安装依赖项(PyTorch 1.12+、TorchVision、ONNX)导出PyTorch模型(加载模型、设置评估模式、使用torch.onnx.export导出)优化ONNX模型(使用onnx-simplifier简化、使用onn…

    2025年12月13日
    000
  • Day – 切片、for 循环和嵌套循环

    切片: 切片是 python 中用于提取序列的一部分的编程技术。通过指定索引范围,您可以检索序列的特定部分,而无需更改原始数据。 示例: 名称=[2,8] 步骤运算符: 步进运算符是指在循环中指定迭代增量的能力。在 python 中,这通常与 range() 函数一起使用,它允许指定一个步骤来控制循…

    2025年12月13日
    000
  • 基于Python制作一个全自动微信清粉小工具

    借助 Python,可以打造全自动微信清粉神器:1. 导入库并登录微信。2. 获取好友列表。3. 通过上次联系时间筛选僵尸粉。4. 删除僵尸粉。5. 清理完成后退出微信。 打造全自动微信清粉神器:Python 实战 随着社交媒体的蓬勃发展,微信已成为我们生活中不可或缺的一部分。然而,随着好友数量的不…

    2025年12月13日
    000
  • 使用Python和FastAPI实现MinIO断点续传功能

    使用MinIO SDK和FastAPI框架,可以在Python应用程序中实现断点续传。步骤依次为:1. 安装依赖项,2. 初始化MinIO客户端,3. 实现文件上传处理,4. 处理断点请求,5. 测试断点续传。通过设置“x-amz-upload-state”请求头部,可以暂停和恢复大型文件上传,而无…

    2025年12月13日
    000
  • 适用于 SQL 思维的 ChromaDB

    您好,chroma db 是一个矢量数据库,对于使用 genai 应用程序非常有用。在本文中,我将通过查看 mysql 中的类似关系来探索如何在 chroma db 上运行查询。 模式 与 sql 不同,您无法定义自己的架构。在 chroma 中,您会获得固定的列,每个列都有自己的用途: impor…

    2025年12月13日
    000
  • Python 复合条件表达式中的短路

    本文介绍了 python 复合条件表达式中的短路求值如何通过在结果确定后立即停止求值来提高效率。 要理解 python 中复合条件表达式中的短路概念,熟悉逻辑运算符“and”和“or”非常重要。下表总结了这些运算符的逻辑结果。 表 1“与”和“或”运算符注意:来自模块 3:了解 python 决策控…

    2025年12月13日
    000
  • 干净的架构:从哪里开始?

    在上一篇文章中我们有: 我们的问题域:具有一些要求的 todo 应用程序配置为使用 python 和 python polylith 的基本存储库。 因此,一些决定已经完成。我们拥有一些工具并已经决定了存储库的外观。 这是我喜欢 polylith 的原因之一:无论您编码什么或您的组织有多大,所有存储…

    2025年12月13日
    000
  • Python日循环-使用范围函数和索引、任务

    斐波那契数列:1)使用3个变量: f, s = -1, 1t = 0while t<=13: t= f + s print(t,end= ' ') f,s = s, t 输出: 0 1 1 2 3 5 8 13 21 2) 使用 2 个变量: f, s = -1, 1 wh…

    2025年12月13日
    000
  • AoC &#- Day 仔细考虑(C# 和 Python)

    仔细考虑一下 今天的挑战我第一次看到regex时就尖叫起来,主要是因为每当我看到“提取该字符串的一部分”时,regex就是我的首选; 基本概念和要求 所以我们需要找到所有 mul(number1, number2) 并将它们相乘,但忽略所有其他字符。 所以我们需要找到一种机制来查找所有有效的 mul…

    2025年12月13日
    000
  • 了解 Python 语法和变量

    嘿,python 爱好者!如果您想深入了解 python 世界或提高自己的技能,那么掌握 python 的语法和变量是一个绝佳的起点。 python 以其简单性和可读性而闻名,使其成为各个级别开发人员的首选。在本指南中,我们将通过大量实际示例和最佳实践来阐明 python 语法和变量的基础知识。所以…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信