news 2026/6/15 17:23:14

解析 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/15 7:19:13

FaceFusion人脸替换全流程演示:输入到输出只需3步

FaceFusion人脸替换全流程演示:输入到输出只需3步 在数字内容创作和视觉特效日益普及的今天,AI驱动的人脸替换技术正迅速从实验室走向实际应用。无论是影视后期中的角色换脸,还是社交媒体上的趣味互动,这类工具都在重新定义我们对…

作者头像 李华
网站建设 2026/6/15 11:02:21

VueQuill终极指南:10分钟构建专业级富文本编辑器

VueQuill终极指南:10分钟构建专业级富文本编辑器 【免费下载链接】vue-quill Rich Text Editor Component for Vue 3. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-quill 在现代Web开发中,富文本编辑器已成为不可或缺的组件。今天&#xff…

作者头像 李华
网站建设 2026/6/15 11:08:08

突破安全测试瓶颈:Nuclei模糊测试深度解析与实战指南

突破安全测试瓶颈:Nuclei模糊测试深度解析与实战指南 【免费下载链接】nuclei Fast and customizable vulnerability scanner based on simple YAML based DSL. 项目地址: https://gitcode.com/GitHub_Trending/nu/nuclei 在当今快速迭代的开发环境中&#x…

作者头像 李华
网站建设 2026/6/15 11:59:39

FaceFusion如何生成换脸过程的对比图?

FaceFusion如何生成换脸过程的对比图?在数字内容创作愈发依赖AI的今天,人脸交换技术早已不再是影视特效工作室的专属工具。随着开源项目如FaceFusion的普及,普通开发者甚至爱好者也能在本地运行高质量的换脸流程。但真正决定一个工具是否“好…

作者头像 李华
网站建设 2026/6/15 12:04:23

5分钟快速上手Chai-lab:生物分子结构预测的终极指南

5分钟快速上手Chai-lab:生物分子结构预测的终极指南 【免费下载链接】chai-lab Chai-1, SOTA model for biomolecular structure prediction 项目地址: https://gitcode.com/gh_mirrors/ch/chai-lab 想要轻松预测蛋白质、抗体等生物分子的三维结构吗&#xf…

作者头像 李华