类方法,实例方法,静态方法对比

Date: 2024.04.16

实例方法:如果某一个方法需要访问到对象的实例属性,可以把这个方法封装成一个实例方法。
类方法:如果某一个方法不需要访问对象的实例属性,但是需要访问到类的类属性,这个时候就可以考虑把这个方法封装成一个类方法。
静态方法:一个实例方法, 一个类方法,这是两种方法类型,但是在开发中还有一种情况,如果要封装的某一个方法,既不需要访问到对象的实例属性,也不需要访问类的类属性,这个时候就可以考虑把这个方法封装成一个静态方法。

个人而言,其实静态方法没什么必要直接用一个普通的方法就行了,这只是个人观点,欢迎互相讨论。
看下面的例子:

# 对比实例方法,类方法和和静态方法的区别class Myclass:count = 0  # 类变量# 构造函数def __init__(self, name) -> None:self.name = nameMyclass.count += 1# 实例方法def getinstancename(self):print(f"instance method: {self.name}")# 类方法@classmethoddef getclassname(cls):print(f"We have {cls.count} instances")# 静态方法@staticmethoddef getstaticname(instance):print(f"static method {instance.name}")if __name__ == "__main__":obj1 = Myclass("test1")  # 实例化对象obj1.getinstancename()  # 调用实例方法Myclass.getclassname()  # 调用类方法Myclass.getstaticname(obj1)  # 调用静态方法,用类名调用obj1.getstaticname(obj1)  # 调用静态方法,用实例调用obj2 = Myclass("test2")  # 实例化对象2Myclass.getclassname()  # 调用类方法,实例数量增加

输出结果:

instance method: test1
We have 1 instances
static method test1
static method test1
We have 2 instances

可以看到实例方法,类方法,静态方法的区别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt如何编写生成后事件

我们都知道VS能编写生成后事件,用于指定程序编译之后执行某些命令行,常见的如文件的拷贝、清理等等;那么,Qt能否支持支持在 .pro 文件中指定生成后事件呢,答案是肯定的。 下面是给出的一个简洁的例子: DEST…

【安装部署】Apache SeaTunnel 和 Web快速安装详解

版本说明 由于作者目前接触当前最新版本为2.3.4 但是官方提供的web版本未1.0.0,不兼容2.3.4,因此这里仍然使用2.3.3版本。 可以自定义兼容处理,官方提供了文档:https://mp.weixin.qq.com/s/Al1VmBoOKu2P02sBOTB6DQ 因为大部分用…

引领智能互联时代,紫光展锐赋能百业创新发展

随着5G技术的快速发展,各行各业对通信技术的需求也在不断升级。紫光展锐持续深耕5G垂直行业,不断推进5G标准演进,从R15到R16,再到R17,展锐携手生态合作伙伴,不断推出创新性解决方案,在5G RedCap…

发作性睡病可以通过饮食调理吗?

发作性睡病是一种慢性的睡眠障碍,患者在白天会出现无法控制的睡意,甚至可能突然入睡。虽然饮食不能直接治愈发作性睡病,但合理的饮食调整可以在一定程度上缓解症状,提高患者的生活质量。 首先,发作性睡病患者需要保持…

【Unity】RPG小游戏创建游戏中的交互

RPG小游戏创建游戏中的交互 创建可交互的物体的公共的父类(Interactable)InteractableObject 类NPCObject 类PickableObject 类 创建可交互的物体的公共的父类(Interactable) InteractableObject 类 using System.Collections; u…

MySQL 5.7 重置root用户密码

MySQL 5.7 重置root用户密码 如果你忘记了 MySQL 5.7 的 root 用户密码,可以按照以下步骤来重置密码: 1、停止 MySQL 服务。 # systemctl stop mysql.service 2、进入MySQL服务的安全启动模式 # mysqld_safe --skip-grant-tables &3、连接到 MyS…

Transformers 库 与 Transformer 有什么区别?

"Transformers"库和"Transformer"模型是两个不同的概念,但它们都与自然语言处理(NLP)紧密相关。下面我将详细介绍这两者之间的区别。 Transformers库 "Transformers"是一个由Hugging Face团队开发的开源Pyth…

【攻防世界】warmup

[HCTF 2018]WarmUp全网最详细解释_[hctf 2018]warmup的解-CSDN博客 php://filter 读取源码(文件) php://input 执行php代码,需要post请求提交数据 Content-Type为image/jpeg text. 绕过后缀的有文件格式有php,php3,php4,php5,pht…

【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效,灰度、负片、像素化特效

前言 【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效,灰度、负片、像素化特效一、UGUI特效插件:UIEffect1.1 介绍1.2 效果展示1.3 使用说明及下载 二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 使用灰度特效做头像(关卡)选择 总结 前…

03-JAVA设计模式-迭代器模式

迭代器模式 什么是迭代器模式 迭代器模式(demo1.Iterator Pattern)是Java中一种常用的设计模式,它提供了一种顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示的方法。迭代器模式将遍历逻辑从聚合对象中分离出来…

IP地址归属地与旅游业应用

在当今数字化时代,IP地址归属地已成为许多行业的重要工具,其中包括旅游业。IP地址归属地是指将特定IP地址与其地理位置相关联的过程。在旅游业中,利用IP地址归属地可以提供多种应用,从客户定位到个性化推广,以及旅游数…

树--排序二叉树的删除

一、二叉排序树的删除 二叉排序树的删除情况比较复杂,有以下三种情况需要考虑。 删除叶子节点 (比如:2,5,9,10)删除只有一个子树的节点(比如:1)删除有两个子树的节点 (比如&#x…

YAPI第一次创建项目

黑马程序员JavaWeb开发教程 文章目录 1、添加项目2、添加分类3、添加接口 1、添加项目 2、添加分类 3、添加接口

用通俗易懂的语言来解释开源软件各种协议的区别

开源软件协议是一系列法律文本,它们规定了人们如何使用、修改和分发开源代码。这些协议确保软件可以自由地被他人利用,同时保护原作者的权益和软件的开放性。以下是几种常见开源协议的通俗解释: 1. GNU 通用公共许可证(GPL&#…

wsl2的ubuntu22.04中安装ros2

1、设置编码 sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 export LANGen_US.UTF-8 2、hosts文件中添加域名解析 vim /etc/hosts 199.232.96.133 raw.githubusercontent.com 199.232.96.133 raw.github.com 3、设置软件源 su…

avue中增删改功能hook提取

再avue使用中,我们会进场用到表格的增删改功能,我们写一个公共的hooks,然后只需要对请求的方法,参数的前后处理,就可以统一生成 import type { AxiosPromise } from "axios"; import type { Ref } from &qu…

数据结构:线性表————单链表专题

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

STM32的GPIO端口的八种模式解析

目录 STM32的GPIO端口的八种模式解析 一、上拉输入模式 二、下拉输入模式 三、浮空输入模式 四、模拟输入模式 五、推挽输出模式 六、开漏输出模式 七、复用推挽输出模式 八、复用开漏输出模式 STM32的GPIO端口的八种模式解析 在学习STM32的过程中,GPIO端口…

最全面的多语言同城送餐app开发流程解析

在当今数字化时代,随着移动互联网的普及和人们生活水平的提高,多语言同城送餐app开发成为各大企业争相布局的热门领域。本文将从专家的视角出发,为您详细解析最全面的多语言同城送餐app开发流程,助您在激烈的竞争中脱颖而出。 多…

mysql not in 和 null

in语句不会对null进行过滤匹配 not in语句后面的范围不能出现null,否则执行无效,如果后面是子查询,则需要手动增加is not null过滤条件 力扣题目链接 本题中如果将第二个case中的in改成not in,因为目标中有null 则会直接跳过第二…