【入门】Python类方法有几种?常用的有哪种?怎么用呢?

news/2025/4/1 20:38:59/文章来源:https://www.cnblogs.com/cqx-test/p/18796512

 实例方法 (Instance Method)

最常用,必须通过类的实例调用,第一个参数是 self(指向实例本身)。

class MyClass:def instance_method(self, arg1, arg2):print(f"实例方法被调用,self={self}, args={arg1}, {arg2}")# 使用
obj = MyClass()
obj.instance_method("参数1", "参数2")  # 自动传递 self

特点:

  • 可以访问和修改实例属性 (self.xxx)
  • 可以访问类属性 (self.__class__.xxx)

2. 类方法 (Class Method)

用 @classmethod 装饰器定义,第一个参数是 cls(指向类本身),无需创建实例即可调用。

python
 
class MyClass:class_var = "类变量"@classmethoddef class_method(cls, arg1):print(f"类方法被调用,cls={cls}, 类变量={cls.class_var}, arg1={arg1}")# 使用
MyClass.class_method("参数1")  # 无需实例化
obj = MyClass()
obj.class_method("参数1")     # 也可以通过实例调用

常用场景:

  • 工厂模式(创建类的不同实例)
  • 操作类变量(不依赖实例状态)

3. 静态方法 (Static Method)

用 @staticmethod 装饰器定义,无 self 或 cls 参数,类似于普通函数,但属于类的命名空间。

class MyClass:@staticmethoddef static_method(arg1, arg2):print(f"静态方法被调用,args={arg1}, {arg2}")# 使用
MyClass.static_method("参数1", "参数2")  # 无需实例化
obj = MyClass()
obj.static_method("参数1", "参数2")     # 也可以通过实例调用

常用场景:

  • 工具函数(与类相关但不需要访问实例或类状态)
  • 代码组织(将逻辑归类到类中)

对比总结

最常用的方法

  1. 实例方法(90%场景):处理实例-specific 的逻辑。
  2. 类方法(5%场景):工厂方法或操作类变量。
  3. 静态方法(5%场景):工具函数。

如何选择?

  • 需要访问实例属性? → 实例方法
  • 需要访问类属性但不依赖实例? → 类方法
  • 只是逻辑上属于类,无需访问类或实例? → 静态方法

示例场景:

class Pizza:def __init__(self, ingredients):self.ingredients = ingredients# 实例方法def describe(self):print(f"披萨配料: {self.ingredients}")# 类方法(工厂模式)@classmethoddef margherita(cls):return cls(["番茄", "芝士"])# 静态方法@staticmethoddef calculate_area(radius):return 3.14 * radius ** 2# 使用
p1 = Pizza.margherita()  # 类方法创建实例
p1.describe()            # 实例方法
area = Pizza.calculate_area(10)  # 静态方法
 

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

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

相关文章

Pydantic Schema生成指南:自定义JSON Schema

title: Pydantic Schema生成指南:自定义JSON Schema date: 2025/3/27 updated: 2025/3/27 author: cmdragon excerpt: Pydantic的Schema生成机制支持从基础定义到企业级应用的完整解决方案。默认流程包含字段定义、元数据收集、类型映射和Schema组装四个步骤。通过Field的js…

Mybatis三大执行器

目录 1、执行器介绍执行器的选择入口设置执行器两种方式全局配置(不建议)局部设置(建议)2、三个执行器区别SimpleExecutorReuseExecutorBatchExecutor总结3、效率测试 4、平时开发使用 一、执行器介绍Mybatis中执行器关系如上图所示,真正生效并在最后执行中有着不同效果的…

顶灯控制器OHC

汽车顶灯控制器OHC(Over Head Console)顶部控制终端系统,主要实现对车内饰灯以及天窗的控制功能。OHC产品采用平台化设计,并已通过多家整车厂的设计评审和试验验证,为特斯拉、福特、林肯、捷豹、路虎等众多车型配套。 汽车顶灯控制器OHC(Over Head Console)顶部控制终…

MES系统选择哪家好?珠海盈致科技

在制造业数字化转型的浪潮中,制造执行系统(MES)已成为连接企业计划层与生产现场的核心枢纽。面对市场上众多MES服务商,珠海盈致科技凭借其独特的技术架构、行业深耕能力与创新服务模式,成为企业实现精益生产与智能决策的可靠选择。 一、技术架构:从底层兼容到顶层智能的…

新一代ITSM:燕千云重构企业智慧服务生态体系

随着企业数字化建设不断深入,IT服务请求量也呈现爆发式增长态势,多数企业领导者已将员工体验列为战略优先级,企业服务管理已从后台支持走向战略核心。现代企业的服务管理已形成两大核心战场——技术支撑的IT服务与以人为本的员工服务。前者涵盖从基础设施运维到新兴技术融合…

FlowiseAI 任意文件写入漏洞(CVE-2025–26319)

Flowise存在严重的文件上传漏洞,尽管实施了上传校验机制,攻击者仍可通过特殊编码绕过限制,实现任意目录的文件写入。这一安全缺陷使未经授权的攻击者能够上传恶意文件、脚本或SSH密钥,从而获取对托管服务器的远程控制权,对使用该平台构建AI代理的组织构成重大安全威胁。漏…

prisma

Prisma 是一个现代的 ORM(对象关系映射) 工具,用于简化与数据库的交互。它可以帮助开发者通过代码操作数据库,而不必直接编写 SQL 查询。Prisma 支持多种数据库系统,包括 PostgreSQL、MySQL、SQLite 和 SQL Server,并且提供了对 TypeScript 和 JavaScript 的完整支持。Pr…

Hugo 渲染及主页展示白名单

本人通过 Obsidian + Hugo + Github Page + Github Action 来实现文章管理及博客自动化搭建. Hugo 渲染白名单 因为不想将 Obsidian 仓库中的一些隐私笔记发布到博客上, 于是选择使用 module.mounts 来配置允许 Hugo 渲染的文件夹. module:mounts:- source: "content/post…

统计中的三大检验

t 检验 常用于:正态总体方差未知,单样本均值检验;(方差已知用 z-test, 非正态总体小样本用切比雪夫不等式); 两独立正态总体,方差未知但相等,均值差检验;(方差已知用 z-test;方差未知且不等时使用 Welchs t 检验,大样本下正态近似也能用 z-test); 两独立正态总体,…

信创行业面临的挑战与应对策略

信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,构建安全可靠的信息技术体系。近年来,随着全球政治经济形势的变化以及数字化转型的加速,信创行业迎来了前所未有的发展机遇,同时也面临着诸多严峻的挑战。深入剖析这些挑战并探寻有效的应对策略,对于信创行…

PLM项目管理软件如何支持企业的产品合规管理?

产品合规管理在企业运营中至关重要,关乎企业的声誉、市场竞争力以及可持续发展。随着市场环境的日益复杂和法规要求的不断严格,企业面临着越来越多的产品合规挑战。PLM(产品生命周期管理)项目管理软件作为一种强大的工具,能够为企业的产品合规管理提供全方位的支持,助力企…

P1282 多米诺骨牌

链接 https://www.luogu.com.cn/problem/P1282 思路本来的思路是dp[i][j][0/1]表示前i个选j个翻面其中第i个是(1)否(0)翻面。然后递推取min。但是这样很显然会导致类似贪心的问题:只符合前面的局部利益,不符合后续最佳组合。 正确做法: 用dp[i][j]来表示当前考虑到第i个…