Python中类方法、静态方法和实例方法的使用场景

在Python中,类方法(classmethod)、静态方法(staticmethod)和实例方法是类的三种主要方法类型,它们各自适用于不同的场景:

实例方法

实例方法是最常用的方法类型,它用于操作实例属性或者基于实例的状态来执行某些任务。

使用场景:几乎所有需要访问或修改实例属性的情况。

例子:

class Account:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.balance = balance
    
    def deposit(self, amount):
        self.balance += amount
        return self.balance

在这个例子中,deposit是一个实例方法,用于向特定账户(实例)中存钱。

类方法

类方法使用 @classmethod 装饰器定义,它接收类作为第一个参数(通常命名为cls)。类方法可以访问类属性,但不能访问实例属性。

使用场景:当你需要执行与整个类相关的操作,而不是类的某个实例时。

例子:

class Employee:
    num_of_employees = 0
    
    @classmethod
    def add_employee(cls):
        cls.num_of_employees += 1

在这个例子中,add_employee是一个类方法,用于增加员工数量的计数。这个操作与任何单独的员工实例无关,而是与Employee类本身相关。

静态方法

静态方法使用 @staticmethod 装饰器定义,它既不接收实例也不接收类作为参数。静态方法就像是定义在类之内的普通函数。

使用场景:当你需要在类中定义一个与类和实例都无关的功能时。

例子:

class MathUtility:
    @staticmethod
    def add(x, y):
        return x + y

在这个例子中,add是一个静态方法,用于执行两个数的加法。这个操作既不需要类的状态也不需要实例的状态。

总结

使用实例方法来访问或修改对象的状态。

使用类方法来修改类状态或者在不需要实例的情况下执行操作。

使用静态方法来组织与类相关但不需要类或实例状态的函数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ansible-Playbook——部署LNMP架构

目录 环境准备 一、配置Nginx的Roles角色 1.创建Nginx所需的文件夹 2.编写Nginx配置文件 3.编写Nginx安装文件 4.编写Nginx控制器文件 5.编写Nginx任务文件 6.编写Nginx变量文件 二、配置Mysql的Roles角色 1.创建Mysql所需的文件夹 2.编写Mysql启动文件 3.编写Mysql…

高性价比开放式耳机有哪些?五大好评热卖开放式耳机推荐

近年来,开放式耳机凭借其独特的开放式声学设计,给用户带来了动态空间的音质享受。在佩戴等方面也带来了一定的舒适度。然而,面对满目的耳机品牌,新手小白往往会不知道如何挑选。那如何选择一款适合自己的产品呢?我整理…

瑞麦德机电设备有限公司将莅临2024第13届生物发酵展

参展企业介绍 河南瑞麦德机电设备有限公司是专业从事机械输送气力输送、称重配料、筛分、磁选设备研发和制造于一体的企业,公司采用国内外同行业产品的先进技术,经专业团队设计、研发、生产,产品满足“ISO9001”,“GMP”等标准要求…

【爬虫】爬取A股数据写入数据库(二)

前几天有写过一篇 【爬虫】爬取A股数据写入数据库(一),现在继续完善下,将已有数据通过ORM形式批量写入数据库。 2024/05,本文主要内容如下: 对东方财富官网进行分析,并作数据爬取,使…

MATLAB添加自编写.m文件或.mat数据并永久全局调用方法

菜单栏选择设置路径,然后“添加并包含子文件夹”,在弹出窗口中找到目标文件夹即可。此方案可以永久地将文件夹加入MATLAB路径。 添加包含自编写.m文件的文件夹: 即可实现永久全局调用。

Spring Web MVC 快速入门

🎥 个人主页:Dikz12🔥个人专栏:Spring学习之路📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 什么是Spring MVC? MVC模式介绍 ​编辑学习Spring MVC…

Llama 3 模型上下文长度扩展至1048K

AI苏妲己: Gradient AI 近日宣布,通过其创新的渐进式训练方法,成功将 Llama 3 系列模型的上下文长度扩展至超过100万令牌。 Llama 3 模型最初设计用于处理8000个令牌的上下文长度,这大约相当于6000字或10页文档。为了适应更长的…

一站式IT运维管理平台CAT

什么是 CAT ? CAT(Coffee And Tea)是专为 IT 运维从业者打造的一个开源的、开放的一站式 IT 运维管理平台。包含资产管理、工单、工作流、仓储等功能模块,以及可靠的移动端应用(Uniapp)支持。 CAT 项目是 c…

node.js安装及环境配置超详细教程【Windows系统安装包方式】

Step1:下载安装包 https://nodejs.org/zh-cn/download/ 根据自己电脑系统及位数选择,我的电脑是Windows系统、64位、想下载稳定版的.msi(LTS为长期稳定版)这里选择windows64位.msi格式安装包。 .msi和.zip格式区别:…

【智能算法】雪消融优化算法(SAO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年,L Deng受到雪升华和融化行为启发,提出了雪消融优化算法(Snow Ablation Optimizer, SAO)。 2.算法原理 2.1算法思想 SAO模拟了雪的…

大模型微调之 在亚马逊AWS上实战LlaMA案例(四)

大模型微调之 在亚马逊AWS上实战LlaMA案例(四) 在 Amazon SageMaker JumpStart 上微调 Llama 2 以生成文本 Meta 能够使用Amazon SageMaker JumpStart微调 Llama 2 模型。 Llama 2 系列大型语言模型 (LLM) 是预先训练和微调的生成文本模型的集合&#x…

stm32 st7735驱动 详解

初始化指令 void LCD_Init(void) { #if USE_SIM_SPILCD_SIM_SPI_GPIO_Init(); #endifLCD_RES_0();//复位HAL_Delay(100);LCD_RES_1();HAL_Delay(100);LCD_BLK_1();//打开背光HAL_Delay(100);//************* Start Initial Sequence **********//LCD_SPI_Send_Cmd(0x11); //Sl…

merge函数占用内存过大

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

TinyEngine 低代码引擎区块局域网部署方案全新上线!

本文由体验技术团队 TinyEngine 项目组成员创作~ 在 TinyEngine 开源后,对私有化部署存在诉求的用户越来越多,而当前 TinyEngine 多项内容都依托在公网中,当前官网提供的区块发布方案,为公网环境下的发布,不能完全满足…

JavaEE技术之MySql高级-ShardingSphere5(SpringBoot版本:3.0.5)

文章目录 1 ShardingSphere-JDBC读写分离1.1 创建SpringBoot程序1.1.1、创建项目1.1.2、添加依赖1.1.3、创建实体类1.1.4、创建Mapper1.1.5、配置 Spring Boot1.1.6、配置shardingsphere 1.2 测试1.2.1 读写分离测试1.2.2 负载均衡测试1.2.3 事务测试常见错误 2 ShardingSphere…

EMAP的Root工程及其他工具

首先右击项目导航,新建EMAP系统配置 上方辅助工具功能: 1 2 3 4 5 6 7 8 9 10 查看重复数据模型:显示为放大镜标识,可以显示所有应用中相同…

rabbitmq集群搭建失败解决

1. 现象 1. 三台机器都已经修改hosts,各个节点ping节点名正常 2. erlang.cookie各节点值一样 执行下面步骤加入失败 rabbitmqctl stop_app # 停止rabbitmq服务 rabbitmqctl reset # 清空节点状态 rabbitmqctl join_cluster rabbitrabbitmq3 rabbitmqctl start_ap…

STM32 GPIO介绍

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH),两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。 通过软件配置寄…

Redis-三主三从高可用集群搭建

正式搭建之前,注意事项(坑)提前放到最开始,也可以出问题回来看, (1)第二步中最好将配置文件中的logfile自定义一个目录,以便于在第五步中启动出错的时候迅速定位错误。 &#xff0…

【SpringBoot】 什么是springboot(一)?如何搭建springboot项目?

文章目录 SpringBoot第一章1、什么是springboot1、回顾ssm项目搭建流程2、springboot项目的优点2、搭建springboot项目方式1:方式2:第二章1、基本配置1、热部署2、注解3、端口配置application.properties特点application.yml特点注意4、环境配置springboot中的配置文件要求5、…
最新文章