news 2026/3/27 5:15:13

解析 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/3/26 9:57:18

5个步骤:用gumbo-parser打造专业级HTML验证工具

5个步骤:用gumbo-parser打造专业级HTML验证工具 【免费下载链接】gumbo-parser An HTML5 parsing library in pure C99 项目地址: https://gitcode.com/gh_mirrors/gum/gumbo-parser 在当今Web开发领域,HTML5解析库gumbo-parser凭借其纯C99实现和…

作者头像 李华
网站建设 2026/3/26 7:00:35

Java全栈开发工程师的实战面试:从基础到项目落地

Java全栈开发工程师的实战面试:从基础到项目落地 面试官与应聘者的初次接触 面试官:你好,我是负责技术面试的工程师,今天会和你聊聊你在Java全栈开发方面的经验和项目经验。先自我介绍一下吧。 应聘者:你好&#xff0c…

作者头像 李华
网站建设 2026/3/13 12:11:21

SCI共同第一作者有用吗?

SCI共同第一作者有用吗?SCI共一作被承认吗?认可吗?很多作者发表SCI论文的时候,署名的是共同第一作者,不知道这样的署名方式评职称或者毕业的时候是否认可,也不知道这个SCI共同第一作者最多可以有几个&#…

作者头像 李华
网站建设 2026/3/13 1:58:34

Ruoyi-AI本地向量化部署:企业知识智能化的技术革命

Ruoyi-AI本地向量化部署:企业知识智能化的技术革命 【免费下载链接】ruoyi-ai RuoYi AI 是一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。 项目地址: https://gitcode.com/ageerle/ruoyi-ai 在数字化浪潮席卷各行各业的…

作者头像 李华
网站建设 2026/3/23 0:51:11

FaceFusion能否用于艺术创作中的超现实表达?

FaceFusion能否用于艺术创作中的超现实表达?在当代数字艺术的浪潮中,一个令人不安又着迷的问题正悄然浮现:当我们的脸不再属于我们自己时,它还能表达“真实”吗?这不是哲学思辨的起点,而是技术现实——像Fa…

作者头像 李华