
如何在实际开发中选择类变量、实例变量Python核心判断一句话属于这个「类本身」、所有实例共享的数据 → 用类变量属于「每一个对象自己」、每个实例独立的数据 → 用实例变量一、先回顾内存特点选择的底层依据类变量存储在类对象中所有实例共用同一份内存实例读取时先找实例命名空间找不到再去类里面找。 ⚠️陷阱如果用实例.类变量 xxx赋值会直接新建实例变量不会修改原始类变量。实例变量存储在各个实例各自的命名空间每个对象独立一份内存互不干扰。二、适用场景✅ 选【类变量】的场景所有实例共用的常量、固定配置class User: # 所有人共享不会随实例变化 MAX_AGE 120 TABLE_NAME user_table统计类全局状态实例之间需要共享计数class User: count 0 # 全局计数器所有实例共享 def __init__(self, name): self.name name User.count 1默认值只读场景注意可变对象不要放类变量list/dict会被所有实例共享篡改# ❌ 错误共享可变对象 class A: data [] a1 A() a2 A() a1.data.append(1) print(a2.data) # [1]意外污染类变量适合只读共享如果是可变数据尽量放到实例__init__里。✅ 选【实例变量】的场景绝大多数业务场景每个对象独有的属性用户名、id、手机号、订单金额每个实例不一样class User: def __init__(self, name, uid): self.name name # 实例独有 self.uid uid # 实例独有实例生命周期内会独立变化的数据对象之间互不影响需要封装、每个对象单独维护的状态三、快速决策判断清单开发时直接对照属性是否每个实例都不一样→实例变量属性是否全类统一、所有对象共用→类变量这个属性是可变类型 (list/dict)尽量实例变量需求修改 A 实例会不会影响 B 实例希望 A 修改B 跟着变 → 类变量mp.panpaimx.com/blog/9kLm2QpX7a.htmlmp.panpaimx.com/blog/Zx4Tn8Vr1B.htmlmp.panpaimx.com/blog/Qw7Yh3Ns5D.htmlmp.panpaimx.com/blog/Mc2Jv9Kp6E.htmlmp.panpaimx.com/blog/Rt8Bn4Xz0F.htmlmp.panpaimx.com/blog/Hg5Lp1Wq7G.htmlmp.panpaimx.com/blog/Uv3Dm6Yr2H.htmlmp.panpaimx.com/blog/Pa9Kc4Nt8J.htmlmp.panpaimx.com/blog/Se2Qx7Vb5K.htmlbbs.panpaimx.com/blog/Fn6Wm1Zp3L.htmlbbs.panpaimx.com/blog/Yd4Hr9Cv2M.htmlbbs.panpaimx.com/blog/Jk7Tq3Bs8N.htmlbbs.panpaimx.com/blog/Ol1Pm5Xw6P.htmlbbs.panpaimx.com/blog/Bg8Nc2Vr4Q.htmlbbs.panpaimx.com/blog/Xm5Kt7Yd1R.htmlbbs.panpaimx.com/blog/Cv9Qp3Ln6S.htmlbbs.panpaimx.com/blog/Zr2Wm8Hx4T.htmlbbs.panpaimx.com/blog/Nk6Jd1Vp9U.htmlbbs.panpaimx.com/blog/Lq4Yt7Bc2V.htmlmp.panpaimx.com/blog/Wp8Rm3Nx5W.htmlmp.panpaimx.com/blog/Td1Kv6Qs9X.htmlmp.panpaimx.com/blog/Hx5Pm2Zr7Y.htmlmp.panpaimx.com/blog/Gc9Bn4Wt1Z.htmlmp.panpaimx.com/blog/Vr3Lq8Jd6A.htmlmp.panpaimx.com/blog/Mp7Yx2Kc5B.htmlmp.panpaimx.com/blog/Ks4Wm9Nv3C.htmlmp.panpaimx.com/blog/Qn1Rt6Bp8D.htmlmp.panpaimx.com/blog/Dz5Jv2Xm7E.htmlmp.panpaimx.com/blog/Sb9Lq4Hr1F.htmlmp.panpaimx.com/blog/Yt3Pm8Kx6G.htmlmp.panpaimx.com/blog/Rc7Wn1Vd4H.htmlmp.panpaimx.com/blog/Bp2Qx9Lm5J.htmlmp.panpaimx.com/blog/Nv6Tr3Yc8K.htmlmp.panpaimx.com/blog/Lm1Jd7Wp2L.htmlmp.panpaimx.com/blog/Xq5Kv9Bn4M.htmlmp.panpaimx.com/blog/Ct8Rm2Hx7N.htmlmp.panpaimx.com/blog/Zp3Yq6Ld1P.htmlmp.panpaimx.com/blog/Gv9Wm4Nc5Q.htmlmp.panpaimx.com/blog/Hk2Jx7Rt8R.htmlmp.panpaimx.com/blog/Md6Pq1Bv3S.htmlmp.panpaimx.com/blog/Tn8Lm5Wx2T.htmlmp.panpaimx.com/blog/Qr4Yp9Kc7U.htmlmp.panpaimx.com/blog/Vx1Jv6Nd3V.htmlmp.panpaimx.com/blog/Kp7Wm2Ht9W.htmlmp.panpaimx.com/blog/Bc5Rq8Lx4X.htmlmp.panpaimx.com/blog/Nm9Yd3Pv1Y.htmlmp.panpaimx.com/blog/Lt2Kx7Bc6Z.htmlmp.panpaimx.com/blog/Xv8Qm4Nr5A.htmlmp.panpaimx.com/blog/Cp1Jd9Wt3B.htmlmp.panpaimx.com/blog/Zk6Lq2Yx8C.htmlmp.panpaimx.com/blog/Gr3Pm7Vc1D.htmlmp.panpaimx.com/blog/Hx9Bn5Kd4E.htmlmp.panpaimx.com/blog/Mv2Tq8Lm6F.htmlmp.panpaimx.com/blog/Tc7Yp1Rx3G.htmlmp.panpaimx.com/blog/Qm4Jv9Wd5H.htmlmp.panpaimx.com/blog/Vp8Km2Nx7J.htmlmp.panpaimx.com/blog/Kd1Lq6Bt9K.htmlmp.panpaimx.com/blog/Bx5Rm3Yc2L.htmlmp.panpaimx.com/blog/Nq9Pv7Hd4M.htmlmp.panpaimx.com/blog/Lm3Jx1Wt6N.htmlmp.panpaimx.com/blog/Xc8Qm5Bv2P.htmlmp.panpaimx.com/blog/Cv4Kd9Nr7Q.htmlmp.panpaimx.com/blog/Zp1Yq6Lx3R.htmlmp.panpaimx.com/blog/Gt7Wm2Vc9S.htmlmp.panpaimx.com/blog/Hk5Jv8Rd1T.htmlmp.panpaimx.com/blog/Mx9Pq3Bn6U.htmlmp.panpaimx.com/blog/Tm2Ld7Wv4V.htmlmp.panpaimx.com/blog/Qc6Yp1Kx8W.htmlmp.panpaimx.com/blog/Vr3Jm9Nt5X.htmlmp.panpaimx.com/blog/Kp8Qv4Bd2Y.htmlmp.panpaimx.com/blog/Bm1Lx6Wc7Z.htmlmp.panpaimx.com/blog/Nv5Rd9Yp3A.htmlmp.panpaimx.com/blog/Lq2Km7Jx8B.htmlmp.panpaimx.com/blog/Xt9Pm4Vc1C.htmlmp.panpaimx.com/blog/Cd3Qv8Bn6D.htmlmp.panpaimx.com/blog/Zx7Lp2Yr5E.htmlmp.panpaimx.com/blog/Gm1Jd6Wv9F.htmlmp.panpaimx.com/blog/Hv4Kq9Nx2G.htmlmp.panpaimx.com/blog/Mp8Rm3Bc7H.htmlmp.panpaimx.com/blog/Tq1Yv5Ld4J.htmlmp.panpaimx.com/blog/Qx6Jm2Wt9K.htmlmp.panpaimx.com/blog/Vc3Pq7Rn1L.htmlmp.panpaimx.com/blog/Km9Ld4Bv6M.htmlmp.panpaimx.com/blog/Bp2Xv8Yc3N.htmlmp.panpaimx.com/blog/Nr5Qm1Jx7P.htmlmp.panpaimx.com/blog/Lv8Kd3Wt2Q.htmlmp.panpaimx.com/blog/Xm4Pq9Bc6R.htmlmp.panpaimx.com/blog/Ct1Rv7Lx5S.htmlmp.panpaimx.com/blog/Zp8Jm2Yd4T.htmlmp.panpaimx.com/blog/Gq3Kv6Nx9U.htmlmp.panpaimx.com/blog/Hm7Ld1Wc5V.htmlmp.panpaimx.com/blog/Mv4Pq8Bt2W.htmlmp.panpaimx.com/blog/Tr9Ym3Jx6X.htmlmp.panpaimx.com/blog/Qc2Kv7Ld1Y.htmlmp.panpaimx.com/blog/Vp6Rm4Nc8Z.htmlmp.panpaimx.com/blog/Kx1Jd9Wv3A.htmlmp.panpaimx.com/blog/Bm5Qq2Yt7B.htmlmp.panpaimx.com/blog/Nc8Lm4Hx1C.htmlmp.panpaimx.com/blog/Lv3Pq9Rd6D.htmlr7k2m9.panpaimx.comq3v8n1.panpaimx.comx9t4p6.panpaimx.coma2c7f5.panpaimx.comm8z3q4.panpaimx.comb6n1r9.panpaimx.comw4y7k2.panpaimx.comd9s3h8.panpaimx.comt5g2v7.panpaimx.comj8p4x1.panpaimx.comc3m9n6.panpaimx.comv7b2q5.panpaimx.comh1r8z3.panpaimx.coms6k4w9.panpaimx.comn2d7f5.panpaimx.come9q3m8.panpaimx.comu4x1p7.panpaimx.coml8v5c2.panpaimx.comy3n9r6.panpaimx.comp7m2k4.panpaimx.commp.panpaimx.com/blog/Xt7Km2Bc5E.html希望 A 修改B 不受影响 → 实例变量四、常见开发最佳实践常量全部大写放在类变量约定规范比如PAGE_SIZE 20实例属性统一在__init__初始化不要中途随意self.xxx 动态新增降低可读性尽量避免用实例去修改类变量修改类变量直接类名.变量继承场景子类可重写类变量实例变量天然隔离继承时不容易踩坑不要滥用类变量存业务数据业务实体属性优先实例变量五、对比小结表格类变量实例变量存储位置类命名空间全局一份各个实例独立命名空间共享性所有实例共享实例之间隔离适用常量、全局统计、类级配置对象自身属性、独立状态风险可变对象容易意外互相污染实例多的时候占用更多内存如果你需要我可以给你面试精简口述版本或者写一段综合练习代码测试你是否分清边界。