news 2026/7/22 11:45:06

解析 Python 类里类变量的修改方式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解析 Python 类里类变量的修改方式

在 Python 类中,类变量是属于类本身的变量,所有实例共享同一内存空间。修改类变量的方式主要有两种:通过类名修改和通过实例修改,但两者的效果截然不同,需要重点区分。

1. 通过类名修改类变量(推荐)

通过类名直接修改类变量,会真正改变类变量的值,所有实例访问该变量时都会获取到更新后的值。

示例:

python

运行

class MyClass: class_var = "初始值" # 类变量 # 通过类名修改类变量 MyClass.class_var = "修改后的值" # 所有实例访问的都是修改后的值 obj1 = MyClass() obj2 = MyClass() print(obj1.class_var) # 输出:修改后的值 print(obj2.class_var) # 输出:修改后的值 print(MyClass.class_var) # 输出:修改后的值

2. 通过实例修改类变量(不推荐,易混淆)

通过实例修改类变量时,不会改变类本身的变量,而是会给该实例创建一个同名的实例变量,此后该实例访问该变量时,会优先使用自己的实例变量(屏蔽类变量),而其他实例和类本身访问的仍然是原来的类变量。

示例:

python

运行

class MyClass: class_var = "初始值" # 类变量 obj1 = MyClass() obj2 = MyClass() # 通过实例 obj1 "修改" 类变量(实际是创建实例变量) obj1.class_var = "obj1的实例变量" # 实例 obj1 访问的是自己的实例变量 print(obj1.class_var) # 输出:obj1的实例变量 # 实例 obj2 和类本身访问的仍是原来的类变量 print(obj2.class_var) # 输出:初始值 print(MyClass.class_var) # 输出:初始值

总结

  • 通过类名修改:会全局更新类变量,影响所有实例。
  • 通过实例修改:不会改变类变量,只会给该实例新增一个同名实例变量,仅影响当前实例。

实际开发中,建议始终通过类名修改类变量,避免通过实例修改导致的逻辑混淆。

https://avg.163.com/topic/detail/8126074
https://avg.163.com/topic/detail/8126272
https://avg.163.com/topic/detail/8126470
https://avg.163.com/topic/detail/8125935
https://avg.163.com/topic/detail/8126065
https://avg.163.com/topic/detail/8126263
https://avg.163.com/topic/detail/8126400
https://avg.163.com/topic/detail/8126466
https://avg.163.com/topic/detail/8125933
https://avg.163.com/topic/detail/8126049
https://avg.163.com/topic/detail/8126269
https://avg.163.com/topic/detail/8126404
https://avg.163.com/topic/detail/8126469
https://avg.163.com/topic/detail/8125931
https://avg.163.com/topic/detail/8126061
https://avg.163.com/topic/detail/8126265
https://avg.163.com/topic/detail/8126401
https://avg.163.com/topic/detail/8126465
https://avg.163.com/topic/detail/8125932
https://avg.163.com/topic/detail/8126397
https://avg.163.com/topic/detail/8126462
https://avg.163.com/topic/detail/8126054
https://avg.163.com/topic/detail/8126398
https://avg.163.com/topic/detail/8126464
https://avg.163.com/topic/detail/8126052
https://avg.163.com/topic/detail/8126258
https://avg.163.com/topic/detail/8126396
https://avg.163.com/topic/detail/8126461
https://avg.163.com/topic/detail/8125930
https://avg.163.com/topic/detail/8126045
https://avg.163.com/topic/detail/8126267
https://avg.163.com/topic/detail/8126402
https://avg.163.com/topic/detail/8126467
https://avg.163.com/topic/detail/8126261
https://avg.163.com/topic/detail/8126399
https://avg.163.com/topic/detail/8126468
https://avg.163.com/topic/detail/8125934
https://avg.163.com/topic/detail/8126050
https://avg.163.com/topic/detail/8126268
https://avg.163.com/topic/detail/8126463

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 1:59:29

LuCI开发环境搭建终极指南:3步完成离线配置

LuCI开发环境搭建终极指南:3步完成离线配置 【免费下载链接】luci LuCI - OpenWrt Configuration Interface 项目地址: https://gitcode.com/gh_mirrors/lu/luci 想要在没有网络的环境下高效开发OpenWrt管理界面?LuCI作为OpenWrt系统的官方Web配置…

作者头像 李华
网站建设 2026/7/21 18:40:50

【Open-AutoGLM vs 传统RPA】:谁才是流程自动化的终极答案?

第一章:流程自动化范式的根本分野在现代企业系统架构中,流程自动化的实现方式呈现出两种截然不同的技术路径:基于规则的编排式自动化与基于事件驱动的响应式自动化。这两种范式在设计理念、执行模型和适用场景上存在本质差异。编排式自动化的…

作者头像 李华
网站建设 2026/7/22 0:39:08

音乐播放新境界:QuickLook音频插件如何实现歌词同步显示

音乐播放新境界:QuickLook音频插件如何实现歌词同步显示 【免费下载链接】QuickLook Bring macOS “Quick Look” feature to Windows 项目地址: https://gitcode.com/gh_mirrors/qu/QuickLook 你是否曾经在Windows上预览音频文件时,因为无法看到…

作者头像 李华
网站建设 2026/7/21 2:12:56

FaceFusion能否用于智能镜子中的人脸美化?

FaceFusion能否用于智能镜子中的人脸美化?在智能家居设备日益复杂的今天,用户早已不再满足于“能用”的镜子——他们希望一面镜子不仅能照出自己,还能以更理想的状态呈现自我。于是,智能镜子悄然兴起:它集成了摄像头、…

作者头像 李华
网站建设 2026/7/21 9:14:54

企业级AI应用的移动端完整适配方案:从技术选型到商业落地

企业级AI应用的移动端完整适配方案:从技术选型到商业落地 【免费下载链接】ruoyi-ai RuoYi AI 是一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。 项目地址: https://gitcode.com/ageerle/ruoyi-ai 在数字化转型浪潮中&a…

作者头像 李华
网站建设 2026/7/21 1:46:04

视频创作者必备!FaceFusion高精度人脸替换工具实测

视频创作者必备!FaceFusion高精度人脸替换工具实测在短视频和虚拟内容创作井喷的今天,一个看似不起眼但极具潜力的技术正悄然改变着影像制作的方式——人脸替换。你有没有想过,只需一张照片,就能让某位演员“出演”一段从未拍过的…

作者头像 李华