You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类的静态属性:随实例重复创建还是所有实例共享?

Python类属性(静态属性)的存储机制

Python里所谓的“静态属性”其实就是类属性,它是所有实例共享的,不会为每个对象单独创建副本。

举个直观的代码例子:

class MyClass:
    static_attr = 10  # 这就是类级别的属性,对应你说的静态属性

# 实例化两个对象
obj1 = MyClass()
obj2 = MyClass()

验证共享特性:

  • 初始状态下,两个实例访问的都是类本身的属性:
print(obj1.static_attr)  # 输出 10
print(obj2.static_attr)  # 输出 10
  • 修改类的属性后,所有实例都会同步拿到新值:
MyClass.static_attr = 20
print(obj1.static_attr)  # 输出 20
print(obj2.static_attr)  # 输出 20
  • 只有当某个实例主动给该属性赋值时,才会在这个实例自己的命名空间里创建一个独立副本,此时该实例访问的是自己的副本,不影响其他实例和类本身的属性:
obj1.static_attr = 30
print(obj1.static_attr)  # 输出 30(实例专属副本)
print(obj2.static_attr)  # 输出 20(还是类的属性)
print(MyClass.static_attr)  # 输出 20

对比你熟悉的C++:
Python的类属性和C++的静态成员逻辑一致——属于类而非实例,所有实例共享同一份数据。不过Python没有专门划分“静态内存区域”,类和实例都是以对象形式存在于堆内存中,类属性存储在类对象的__dict__字典里,实例访问属性时,会先查自己的__dict__,找不到就往上找类的__dict__。

内容的提问来源于stack exchange,提问作者Nicolas Al Ahmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:55:15