news 2026/6/10 23:58:38

解析 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/6/10 1:46:30

Open-AutoGLM能自我迭代,AppAgent却依赖环境反馈?真相究竟如何?

第一章:Open-AutoGLM与AppAgent自主学习能力对比的背景与意义在人工智能快速演进的背景下,大语言模型(LLM)已从单纯的文本生成工具逐步演化为具备任务理解与执行能力的智能代理。Open-AutoGLM 与 AppAgent 是当前两类具有代表性的…

作者头像 李华
网站建设 2026/6/10 12:29:36

FaceFusion镜像支持Spot Instance:节省70%成本

FaceFusion镜像支持Spot Instance:节省70%成本 在AI生成内容(AIGC)爆发式增长的今天,人脸替换技术正从实验室走向大众应用。无论是短视频平台的趣味滤镜、影视后期的数字替身,还是虚拟偶像的实时驱动,高质量…

作者头像 李华
网站建设 2026/6/10 12:51:40

FaceFusion后处理功能详解:去噪、锐化、色彩匹配技巧

FaceFusion后处理功能详解:去噪、锐化、色彩匹配技巧 在AI生成图像日益普及的今天,人脸融合技术已经不再是实验室里的概念——它正广泛应用于虚拟主播、影视特效、社交娱乐乃至数字身份构建。然而,尽管像GFPGAN、FaceShifter这类模型能在结构…

作者头像 李华
网站建设 2026/6/9 23:58:23

彻底搞懂之C++智能指针

一、智能指针概述在C编程中,内存管理一直是一个重要且容易出错的环节。C11引入了智能指针的概念,利用对象的生命周期来管理资源,构造函数获取资源,析构函数释放资源,基于RAII机制实现了自动内存管理。本文将详细介绍C1…

作者头像 李华
网站建设 2026/6/10 14:10:11

还在手动排序待办事项?Open-AutoGLM一键智能调度已全面上线

第一章:还在手动排序待办事项?Open-AutoGLM一键智能调度已全面上线在快节奏的开发与项目管理中,待办事项(To-Do List)的优先级混乱常常成为效率瓶颈。Open-AutoGLM 的正式上线彻底改变了这一现状,通过融合大…

作者头像 李华
网站建设 2026/6/9 22:11:32

你还在为AI模型移植头疼?Open-AutoGLM + Droidrun一站式适配方案来了

第一章:你还在为AI模型移植头疼?Open-AutoGLM Droidrun一站式适配方案来了在移动设备上部署大语言模型(LLM)长期面临性能、内存和兼容性三大挑战。传统方案往往需要针对不同安卓架构重复编译、手动优化推理引擎,耗时且…

作者头像 李华