python多态、静态方法和类方法
目录
一、多态
二、静态方法
三、类方法
一、多态
多态(polymorphism)是面向对象编程中的一个重要概念,指的是同样的方法调用可以在不同的对象上产生不同的行为。在Python中,多态是通过方法的重写(override)和继承(inheritance)来实现的。
具体来说,当一个父类有一个方法,而子类继承这个方法并对其进行重写时,我们可以用不同的子类对象来调用这个方法,从而产生不同的行为。这样的多态性使得代码更加灵活和可复用。
以下是一个简单的示例来说明Python中多态的概念:
class Animal:def sound(self):passclass Dog(Animal):def sound(self):print("Woof!")class Cat(Animal):def sound(self):print("Meow!")def make_sound(animal):animal.sound()# 创建Dog和Cat对象
dog = Dog()
cat = Cat()# 调用make_sound方法,分别传入Dog和Cat对象,产生不同的行为
make_sound(dog)
make_sound(cat)
这个示例中,Animal是一个父类,而Dog和Cat是继承自Animal的子类。它们都有一个sound方法,但具体的实现不同。通过调用make_sound方法,并将不同的子类对象传入,我们实现了多态性,即相同的方法调用产生了不同的行为。

二、静态方法
在Python中,静态方法是指在类中使用@staticmethod装饰器修饰的方法。静态方法与类方法和实例方法不同,它不需要传入类或实例的引用作为第一个参数。

静态方法通常用于实现类中与类相关而不依赖于实例状态的功能。在静态方法内部,通常不能直接访问类的属性或实例属性,因为它们不接收类或实例的引用。可以直接通过类名调用静态方法,也可以通过实例调用静态方法。

下面是一个简单的示例来说明Python中的静态方法:
class MyClass:def __init__(self, name):self.name = name@staticmethoddef static_method():return "This is a static method"def instance_method(self):return f"This is an instance method for {self.name}"# 调用静态方法
print(MyClass.static_method())# 创建实例并调用实例方法
my_instance = MyClass("Alice")
print(my_instance.instance_method())
在上面的示例中,static_method是一个静态方法,它不需要类或实例的引用,因此可以直接通过类调用。instance_method是实例方法,需要通过实例调用。
三、类方法
在Python中,类方法是一个与类相关联的方法,可以访问类属性和类变量。类方法使用@classmethod装饰器来定义,在方法的第一个参数通常是cls,表示该方法操作的是类本身,而不是实例。通过类方法可以在不创建类的实例的情况下访问和修改类的属性和变量。

下面是一个简单的示例,展示如何定义和使用类方法:
class MyClass:class_variable = "I am a class variable"def __init__(self, instance_variable):self.instance_variable = instance_variable@classmethoddef class_method(cls):print("This is a class method")print(cls.class_variable)# 调用类方法
MyClass.class_method()
在这个示例中,class_method是一个类方法,可以通过MyClass.class_method()直接调用,而无需创建MyClass的实例。


相关文章:
python多态、静态方法和类方法
目录 一、多态 二、静态方法 三、类方法 一、多态 多态(polymorphism)是面向对象编程中的一个重要概念,指的是同样的方法调用可以在不同的对象上产生不同的行为。在Python中,多态是通过方法的重写(override&#x…...
DTMF从2833到inband的方案
概述 freeswitch是一款简单好用的VOIP开源软交换平台。 之前的文章中介绍过通过dialplan拨号计划配置的方法,实现2833到inband的转换,但是实际生产环境中的场景会更复杂,无法预先在dialplan中设置好相关参数和函数。 环境 CentOS 7.9 fr…...
在Vue 3 + TypeScript + Vite 项目中安装和使用 SCSS
在Vue 3 TypeScript Vite 项目中安装和使用 SCSS 1、安装 SCSS 的相关依赖 npm install sass --save-dev2、配置 Vite 对于 Vue 3,Vite 已经内置了对 SCSS 的支持,通常不需要额外的配置。但是,如果需要自定义配置,可以在路径…...
Uni-app入门到精通:tabBar节点实现多页面的切换
tabBar节点用于实现多页面的切换。对于一个多tabBar应用,可以通过tabBar节点配置项指定一级导航栏,以及tabBar切换时显示的对应页面。在pages.json中提供tabBar节点配置,不仅是为了方便快速开发导航,更重要的是提示App平台和小程序…...
Qt正则表达式QRegularExpression
在 Qt 中,正则表达式是处理文本的强大工具,它能够帮助我们匹配、搜索和替换特定的字符串模式。自 Qt 5 起,QRegularExpression 类提供了对 ECMAScript 标准的正则表达式支持,这使得它在处理各种复杂的字符串任务时变得更加高效和灵…...
Go 语言规范学习(3)
文章目录 Properties of types and valuesRepresentation of valuesUnderlying types【底层类型】Core types【核心类型】Type identityAssignabilityRepresentabilityMethod sets BlocksDeclarations and scopeLabel scopesBlank identifierPredeclared identifiersExported i…...
小林coding-17道Java基础面试题
1.说一下Java的特点?Java 的优势和劣势是什么?Java为什么是跨平台的?JVM、JDK、JRE三者关系?为什么Java解释和编译都有? jvm是什么?编译型语言和解释型语言的区别? Python和Java区别是什么? 2.八种基本的…...
ETCD --- 租约(Lease)详解
一、租约的核心概念 1. 租约(Lease) 一个租约是一个有时间限制的“授权”,绑定到键值对上。每个租约有一个唯一的ID(64位整数),通过etcdctl或客户端API创建。创建租约时需指定TTL(Time-To-Live),即租约的有效期(单位:秒)。客户端需定期向etcd发送续约(KeepAl…...
运筹说 第134期 | 矩阵对策的解法
上一期我们了解了矩阵对策的基本理论,包含矩阵对策的纯策略、矩阵对策的混合策略和矩阵对策的基本定理。 接下来小编将为大家介绍矩阵对策的解法,包括图解法、方程组法和线性规划法三种经典方法。 01 图解法 本节首先介绍矩阵对策的图解法,…...
3. 轴指令(omron 机器自动化控制器)——>MC_CamOut
机器自动化控制器——第三章 轴指令 15 MC_CamOut变量▶输入变量▶输出变量▶输入输出变量 功能说明▶时序图▶指令的中止▶重启运动指令▶多重启动运动指令▶异常 MC_CamOut 结束通过输入参数指定的轴的凸轮动作 指令名称FB/FUN图形表现ST表现MC_CamOut解除凸轮动作FBMC_Cam…...
TF32 与 FP32 的区别
TF32(Tensor Float 32)与FP32(单精度浮点数)是两种用于深度学习和高性能计算的浮点格式,其核心区别体现在精度、性能优化和应用场景上。以下是两者的详细对比分析: 一、位宽与结构差异 FP32的位宽结构 FP32…...
【大模型】视觉语言模型:Qwen2.5-VL的使用
官方github地址:https://github.com/QwenLM/Qwen2.5-VL 目录 Qwen家族的最新成员:Qwen2.5-VL 主要增强功能 模型架构更新 快速开始 使用Transformers聊天 Docker Qwen家族的最新成员:Qwen2.5-VL 主要增强功能 强大的文档解析功能&am…...
Web前端之UniApp、Taro、ReactNative和Flutter的区别
MENU 前言介绍及公司技术差异使用方法使用场景差异注意事项打包与部署差异框架应用实例结语 前言 在移动应用开发领域,跨平台框架已成为开发者的得力工具。UniApp、Taro、ReactNative和Flutter它们在Android(安卓)或iOS(苹果&…...
测试用例与需求脱节的修复方案
测试用例与需求脱节的问题可通过明确需求定义、加强需求追踪、建立有效沟通机制进行修复。其中,加强需求追踪尤为关键,能确保测试用例与实际需求的精确匹配,避免资源浪费和测试效果不佳。据行业研究,约70%的软件缺陷源于需求管理不…...
【Unity】 鼠标拖动物体移动速度跟不上鼠标,会掉落
错误示范: 一开始把移动的代码写到update里去了,发现物体老是掉(总之移动非常不流畅,体验感很差) void Update(){Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out RaycastHit hit, M…...
Ollama及HuggingFace路径环境变量设置
日常经常用到这俩的一些环境变量,特记录下来,如有错误,还请指正。 1. Ollama路径环境变量设置 Ollama 模型路径变量名为OLLAMA_MODELS,设置示例: 变量名示例OLLAMA_MODELS C:\Users\Administrator\.ollama\models D…...
VLAN 高级特性
VLAN Access 类型端口:只能属于 1 个 VLAN,发出数据时只能根据 PVID 剥离一个 VLAN Tag 入方向:针对没有 tag 的数据包打上 PVID 的 tag出方向:将 tag 为本接口 PVID 的数据包去掉 tag,发出数据。(只有在与…...
学习中学习的小tips(主要是学习苍穹外卖的一些学习)
目录 架构的细分 使用实体类来接收配置文件中的值 webMvcConfig类: jwt令牌 管理端的拦截器: JwtProperties: JwtTokenAdminInterceptor : 对密码加密操作 Redis: 分页查询 整体思想 为什么动态 SQL 推荐传实体…...
【极速版 -- 大模型入门到进阶】LORA:大模型轻量级微调
文章目录 🌊 有没有低成本的方法微调大模型?🌊 LoRA 的核心思想🌊 LoRA 的初始化和 r r r 的值设定🌊 LoRA 实战:LoraConfig参数详解 论文指路:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE M…...
3d pose 指标和数据集
目录 3D姿态估计、3维重建指标: 数据集 EHF数据集 SMPL-X 3D姿态估计、3维重建指标: MVE、PMVE 和 p-MPJPE 都是用于评估3D姿态估计、三维重建等任务中预测结果与真实数据之间误差的指标。 MVE (Mean Vertex Error):是指模型重建过程中每个顶点的预测位置与真实位置之间…...
gogs私服详细配置
一.永久挂载方法 通过 /etc/fstab 实现绑定挂载(推荐) 绑定挂载(Bind Mount)允许将一个目录挂载到另一个目录,类似于软链接但更底层。 例如:将 /mnt/data 绑定到 /var/www/html,使两者内容同…...
1688商品详情接口:深度解析与应用实践
在电商领域,1688作为中国领先的B2B平台,拥有海量的商品信息。对于开发者、商家和数据分析师来说,获取1688商品的详细信息是实现数据分析、竞品研究、自动化管理和精准营销的重要手段。本文将详细介绍1688商品详情接口的使用方法、技术细节以及…...
线程同步——读写锁
Linux——线程同步 读写锁 目录 一、基本概念 1.1 读写锁的基本概念 1.2 读写锁的优点 1.3 读写锁的实现 1.4 代码实现 一、基本概念 线程同步中的读写锁(Read-Write Lock),也常被称为共享-独占锁(Shared-Exclusive Lock&a…...
邪性!Anaconda安装避坑细节Windows11
#工作记录 最近不断重置系统和重装Anaconda,配置的要累死,经几十次意料之外的配置状况打击之后,最后发现是要在在Anaconda安装时,一定要选“仅为我安装”这个选项,而不要选“为所有用户安装”这个选项。 选“仅为我安…...
【大模型】激活函数之SwiGLU详解
文章目录 1. Swish基本定义主要特点代码实现 2. GLU (Gated Linear Unit)基本定义主要特点代码实现 3. SwiGLU基本定义主要特点代码实现 参考资料 SWiGLU是大模型常用的激活函数,是2020年谷歌提出的激活函数,它结合了Swish和GLU两者的特点。SwiGLU激活函…...
AOA与TOA混合定位,MATLAB例程,三维空间下的运动轨迹,滤波使用EKF,附下载链接
本文介绍一个MATLAB代码,实现基于 到达角(AOA) 和 到达时间(TOA) 的混合定位算法,结合 扩展卡尔曼滤波(EKF) 对三维运动目标的轨迹进行滤波优化。代码通过模拟动态目标与基站网络&am…...
【动态编译】Roslyn中 SyntaxKind 枚举类型
在 Roslyn(.NET 的编译器平台)中,SyntaxKind 是一个枚举类型,定义了 C# 语言中所有可能的语法节点类型。它是 Roslyn 抽象语法树(AST)的基础,用于标识每个 SyntaxNode 的具体种类。SyntaxKind 的…...
getID3获取本地或远程视频时长
音频文件也可使用,使用ffmeg安装太复杂了 附ffmpeg方式:centos下安装ffmpeg_yum安装ffmpeg-CSDN博客 使用composer先安装 composer require james-heinrich/getid3 获取本地视频 //获取本地视频$video_path $_SERVER[DOCUMENT_ROOT].$params[video];…...
【211】线上教学系统
--基于SSM线上教学平添 主要实现的功能有: 管理员 : 首页、个人中心、学员管理、资料类型管理、学习资料管理、交流论坛、我的收藏管理、试卷管理、留言板管理、试题管理、系统管理、考试管理。 学员 : 首页、个人中心、我的收藏管理、留言板管理、考试管理。 前台…...
从混乱思绪到清晰表达:记录想法如何改变你的学习人生
关键要点 • 记录想法似乎是发现自己想法并将其组织成可传播形式的最佳理由,研究表明写作和教学能增强学习和理解。 • 证据倾向于支持写作有助于澄清思想,而教学通过“教授效应”深化知识。 • 教学和分享被认为是最有效的学习方法,这与记录…...
