当前位置: 首页 > news >正文

Python中类方法、静态方法、实例方法是否能访问类属性和实例属性

Python中类方法、静态方法、实例方法是否能访问类属性和实例属性

文章目录

  • Python中类方法、静态方法、实例方法是否能访问类属性和实例属性
  • 1. 实例方法(最常用,第一个参数 self)
  • 2. 类方法 @classmethod(参数 cls,代表当前类)
  • 3. 静态方法 @staticmethod(无 self/cls 参数)
  • 补充:强行在类 / 静态方法拿实例属性(不规范)
  • 完整代码
  • 类属性:定义在类里面、方法外面,类名.属性 / cls.属性
  • 实例属性:init中 self.属性,绑定单个对象

1. 实例方法(最常用,第一个参数 self)

classDemo:cls_attr="类属性"# 类属性def__init__(self):self.obj_attr="实例属性"# 实例属性deffunc(self):print(self.cls_attr)# 访问类属性 ✅print(self.obj_attr)# 访问实例属性 ✅
  • self指向实例对象,既能通过 self 拿实例属性,也能通过 self 访问类属性。

2. 类方法 @classmethod(参数 cls,代表当前类)

@classmethoddefcls_func(cls):print(cls.cls_attr)# 通过cls访问类属性 ✅# print(cls.obj_attr) # 报错!cls是类,没有实例属性 ❌
  • cls是类本身,只能访问类属性;没有实例对象,无法直接访问实例属性。

    特例:传入实例对象手动访问(不推荐):obj.obj_attr,不属于方法原生权限。

3. 静态方法 @staticmethod(无 self/cls 参数)

@staticmethoddefsta_func():print(Demo.cls_attr)# 类名.类属性 ✅# print(Demo.obj_attr) # 报错 ❌
  • 不属于类也不属于实例,只能用「类名。类属性」访问类属性;没有实例引用,不能直接访问实例属性。

一句话速记

  1. 实例方法 (self):全都能访问
  2. 类方法 (cls):只能访问类属性
  3. 静态方法:只能通过类名访问类属性

补充:强行在类 / 静态方法拿实例属性(不规范)

必须手动传入实例对象:

@classmethoddefcls_func(cls,ins):print(ins.obj_attr)d=Demo()Demo.cls_func(d)

只是参数传参,不是方法本身自带访问权限

完整代码

classDemo:cls_attr="类属性"def__init__(self):self.obj_attr="实例属性"# 实例属性deffunc(self):print(self.cls_attr)# 访问类属性print(self.obj_attr)# 访问实例属性@classmethoddefcls_func(cls):print(cls.cls_attr)# 通过cls访问类属性 ✅print(cls.obj_attr)# 报错!cls是类,没有实例属性 ❌@staticmethoddefsta_func():print(Demo.cls_attr)# 类名.类属性 ✅# print(Demo.obj_attr)@classmethoddefcls_func2(cls,ins):print(ins.obj_attr)if__name__=='__main__':d=Demo()Demo.cls_func2(d)
http://www.jsqmd.com/news/952064/

相关文章:

  • low-memory-server-swap-20260601
  • STC89C52电子时钟DIY避坑指南:从洞洞板飞线到Keil编程的完整心路历程
  • 驾校招生、排课、收费、考试全环节落地的SpringBoot+Vue可运行系统(含建库脚本与部署文档)
  • 云原生流量均衡调优:就绪探针优化与 IPVS 容器节点负载均匀分配机制
  • 高防CDN专注网站防御加速服务
  • 调试PHY芯片时,为什么插拔网线才能恢复网速?聊聊AR8035的硬复位与软复位
  • Windows Defender Remover终极指南:彻底解决“Device Guard Blocked“错误的3种方案
  • 星辰变归来最新官方下载渠道6月最新
  • 一文讲透必懂的RAG20个核心概念:从0到 1 学会
  • 方法概述,方法的其他形式,使用常见问题
  • 从EFPLMN到EFFPLMN:实战解析USIM卡如何影响你的手机搜网与信号
  • 从人的双眼到工程双目:双目立体视觉原理、同步方案与 2026 年算法突破
  • 保姆级教程:用Altium Designer导出Gerber文件,一次搞定PCB打样(附常见错误排查)
  • VcXsrv:Windows系统上运行Linux GUI应用的终极解决方案
  • 生态学家别再用SIAR了!手把手教你用R包SIMMR搞定稳定同位素混合模型分析
  • 如何用Zotero Style插件打造你的个性化文献管理系统
  • 盲盒潮玩一番赏小程序开发玩法分析:算法逻辑、功能架构与合规落地
  • ALMA观测揭示HD 100456原行星盘螺旋结构与行星形成机制
  • Jellyfin 卡顿是服务器不够吗?先分清转码和直播放
  • Pandas 内存爆炸?用闭包无侵入监控函数耗时与占用
  • STM32CubeMX实战:用按键和RTC闹钟唤醒你的低功耗设备(附完整代码)
  • 屏幕显示的文字和图片取模操作记录
  • 从Modbus到PLC:手把手教你用RS485搭建一个小型工业网络(避坑指南)
  • 直接用 CTP 做期货自动交易太乱:天勤式状态管理思路
  • 【字节跳动】巨量引擎第二层内核 纯工业级机密参数201-500
  • uBlock Origin终极指南:5分钟打造纯净无广告的浏览器体验
  • Spring Boo从“会用”到“精通”:Spring Boot 入门
  • 毕设可用的中文电影对话问答系统:PyTorch版Seq2Seq+Luong注意力实现
  • AI工具如何72小时内重构对账流程?揭秘头部金融机构已验证的4层智能校验架构
  • MATLAB一键运行的音频水印工具包:支持DWT-DCT-SVD嵌入提取、多音频测试与图像水印可视化评估