当前位置: 首页 > 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.zskr.cn/news/1463681.html

相关文章:

  • 加油卡小程序开发玩法深度解析:功能架构、营销体系与落地方案
  • STC89C52电子时钟DIY避坑指南:从洞洞板飞线到Keil编程的完整心路历程
  • 云原生流量均衡调优:就绪探针优化与 IPVS 容器节点负载均匀分配机制
  • 高防CDN专注网站防御加速服务
  • 调试PHY芯片时,为什么插拔网线才能恢复网速?聊聊AR8035的硬复位与软复位
  • Windows Defender Remover终极指南:彻底解决“Device Guard Blocked“错误的3种方案
  • 方法概述,方法的其他形式,使用常见问题
  • 一文讲透必懂的RAG20个核心概念:从0到 1 学会
  • 从人的双眼到工程双目:双目立体视觉原理、同步方案与 2026 年算法突破
  • 盲盒潮玩一番赏小程序开发玩法分析:算法逻辑、功能架构与合规落地
  • Pandas 内存爆炸?用闭包无侵入监控函数耗时与占用
  • uBlock Origin终极指南:5分钟打造纯净无广告的浏览器体验
  • Spring Boo从“会用”到“精通”:Spring Boot 入门
  • 别再只调API了!用Keras从零复现Facenet人脸识别模型(附完整代码与CASIA-WebFace数据集处理)
  • 期货量化 wait_update 超时怎么办:天勤 TqTimeoutError 分级处理
  • C++ 编码规范
  • 2026年大客户营销咨询选购指南,品牌排名 - mypinpai
  • PPTist:5分钟打造专业演示文稿的终极免费在线PPT制作工具
  • Mac窗口置顶神器Topit:如何让重要窗口永远在最前方
  • 紧急预警:标注数据漂移正 silently 毁掉你的模型效果!——用AI工具构建动态标注质量监控仪表盘(Python+Prometheus实战)
  • 2026年酒泉驾考驾校价格比较:新亿阳驾校性价比高吗? - mypinpai
  • 教育AI整合进入“深水区”:2024Q2行业报告显示,仅17%机构实现L1-L4能力跃迁——你的团队处在哪一级?
  • AI内容工作流会成为品牌基础设施
  • 量化程序如何同时支持回测、模拟盘和实盘
  • 避坑指南:MATLAB读取MDF和BLF文件时,你可能会遇到的5个常见错误及解决方法
  • 5个实用技巧:用marked.js打造高效Markdown处理方案
  • 别再只盯着CCF了!手把手教你用CORE Ranking和CCF中文期刊目录,精准定位你的投稿目标
  • 训练Mask-RCNN时,那个神秘的events文件怎么用TensorBoard打开看损失曲线?
  • Moneta Markets亿汇:“量子芯片点燃科技预期”
  • 如何免费实现游戏控制器虚拟化:ViGEmBus驱动完整指南