类变量与实例变量在继承中的行为差异
一、核心结论先记牢
- 类变量支持继承:子类可读取父类类变量;子类赋值同名类变量会独立一份,不影响父类;父类修改类变量会同步所有未重写该变量的子类。
- 实例变量不继承:实例变量属于单个对象,仅创建实例时在
__init__生成,子类不调用父类构造函数就拿不到父类实例变量。
二、类变量在继承里的完整表现
1. 子类可直接读取父类类变量
子类自身没有同名类变量时,查找链向上找到父类:
python
运行
class Parent: school = "一中" class Child(Parent): pass print(Child.school) # 一中,继承父类类变量2. 子类给同名类变量赋值 → 隔离,互不影响
子类Child.xxx = 值会在子类自己的命名空间新建类变量,父类完全不受影响:
python
运行
Parent.school = "一中" Child.school = "二中" print(Parent.school) # 一中 print(Child.school) # 二中3. 修改父类类变量,会同步所有未重写该变量的子类
python
运行
class Parent: count = 0 class Child1(Parent): pass class Child2(Parent): count = 100 # 子类重写,独立 Parent.count = 999 print(Child1.count) # 999(未重写,跟随父类变化) print(Child2.count) # 100(已重写,不受父类影响)4. 实例读取类变量的查找顺序
实例。变量 → 实例自身属性 → 当前子类类变量 → 父类类变量
python
运行
p = Parent() c = Child() print(c.school) # 先找Child,再找Parent5. 踩坑:子类实例直接赋值同名类变量
obj.var = x只会给实例新增实例变量,不会修改父 / 子类类变量:
python
运行
c = Child() c.school = "三中" print(Child.school) # 二中 不变 print(c.school) # 三中(实例变量遮蔽)三、实例变量在继承里的完整表现
1. 实例变量不会自动继承
父类的self.xxx只属于父类实例,子类不调用super().__init__(),完全无法获取:
python
运行
class Parent: def __init__(self): self.name = "父类" class Child(Parent): def __init__(self): # 没调用super,父类构造没执行 pass c = Child() # print(c.name) 报错 AttributeError2. 调用 super () 才会拥有父类实例变量
python
运行
class Child(Parent): def __init__(self): super().__init__() # 执行父类构造,生成父类实例变量 self.age = 12 # 子类自己的实例变量 c = Child() print(c.name) # 父类(继承得到) print(c.age) # 12(子类自有)3. 父子实例变量相互独立
子类修改self.name,只会覆盖当前实例的属性,不会影响父类实例:
python
运行
p = Parent() c = Child() c.name = "子类" print(p.name) # 父类 print(c.name) # 子类4. 子类无法通过类访问父类实例变量
实例变量绑定对象,类看不到任何实例属性:
python
运行
# Parent.name / Child.name 全部报错四、关键对比表
表格
| 行为 | 类变量 | 实例变量 |
|---|---|---|
| 是否可继承读取 | ✅ 子类可直接读取父类类变量 | ❌ 不会自动继承,必须 super () |
| 子类赋值同名变量 | 生成子类独立类变量,父类不变 | 生成当前实例独立属性,不影响父类实例 |
| 修改父类源头 | 所有未重写的子类同步变化 | 只影响父类自己的实例,和子类无关 |
| 类名能否访问 | ✅ Parent.xxx / Child.xxx | ❌ 类无法访问实例变量 |
| 多实例共享 | 同一类下所有实例共享一份 | 每个实例独立一份 |
| 查找层级 | 实例→子类→父类 | 仅当前实例自身 |
五、综合完整示例
python
运行
class Parent: # 父类类变量 cls_city = "北京" def __init__(self): # 父类实例变量 self.parent_ins = "父实例属性" class Child(Parent): pass # 1. 类变量继承读取 print(Child.cls_city) # 北京 # 2. 子类重写类变量,隔离 Child.cls_city = "上海" print(Parent.cls_city) # 北京 print(Child.cls_city) # 上海 # 3. 实例变量必须super才能获取 c = Child() # print(c.parent_ins) 报错 class Child2(Parent): def __init__(self): super().__init__() self.child_ins = "子实例属性" c2 = Child2() print(c2.parent_ins) # 父实例属性 print(c2.child_ins) # 子实例属性六、一句话总结
- 类变量是沿着继承链共享的类级属性,子类不重写就共用父类数据,重写后完全隔离;
- 实例变量只属于单个对象,不存在继承关系,只有主动调用父类构造函数,实例上才会附带父类定义的实例变量。
- mp.jcswjw.cn
www.jcswjw.cn
jcswjw.cn
mp.jcswjw.cn/article/A2b5C7d1E9.html
mp.jcswjw.cn/article/B3c6D8e2F0.html
mp.jcswjw.cn/article/C4d7E9f3G1.html
mp.jcswjw.cn/article/D5e8F0g4H2.html
mp.jcswjw.cn/article/E6f9G1h5I3.html
mp.jcswjw.cn/article/F7g0H2i6J4.html
mp.jcswjw.cn/article/G8h1I3j7K5.html
mp.jcswjw.cn/article/H9i2J4k8L6.html
mp.jcswjw.cn/article/I0j3K5l9M7.html
mp.jcswjw.cn/article/J1k4L6m0N8.html
mp.jcswjw.cn/article/K2l5M7n1O9.html
mp.jcswjw.cn/article/L3m6N8o2P0.html
mp.jcswjw.cn/article/M4n7O9p3Q1.html
mp.jcswjw.cn/article/N5o8P0q4R2.html
mp.jcswjw.cn/article/O6p9Q1r5S3.html
mp.jcswjw.cn/blog/P7q0R2s6T4.html
mp.jcswjw.cn/blog/Q8r1S3t7U5.html
mp.jcswjw.cn/blog/R9s2T4u8V6.html
mp.jcswjw.cn/blog/S0t3U5v9W7.html
mp.jcswjw.cn/blog/T1u4V6w0X8.html
mp.jcswjw.cn/blog/U2v5W7x1Y9.html
mp.jcswjw.cn/blog/V3w6X8y2Z0.html
mp.jcswjw.cn/blog/W4x7Y9z3A1.html
mp.jcswjw.cn/blog/X5y8Z0a4B2.html
mp.jcswjw.cn/blog/Y6z9A1b5C3.html
mp.jcswjw.cn/blog/Z7a0B2c6D4.html
mp.jcswjw.cn/article/a8b1C3d7E5.html
mp.jcswjw.cn/article/b9c2D4e8F6.html
mp.jcswjw.cn/article/c0d3E5f9G7.html
mp.jcswjw.cn/article/d1e4F6g0H8.html
mp.jcswjw.cn/article/e2f5G7h1I9.html
mp.jcswjw.cn/article/f3g6H8i2J0.html
mp.jcswjw.cn/article/g4h7I9j3K1.html
mp.jcswjw.cn/article/h5i8J0k4L2.html
mp.jcswjw.cn/article/i6j9K1l5M3.html
mp.jcswjw.cn/article/j7k0L2m6N4.html
mp.jcswjw.cn/article/k8l1M3n7O5.html
mp.jcswjw.cn/article/l9m2N4o8P6.html
mp.jcswjw.cn/article/m0n3O5p9Q7.html
mp.jcswjw.cn/article/n1o4P6q0R8.html
mp.jcswjw.cn/article/o2p5Q7r1S9.html
mp.jcswjw.cn/article/p3q6R8s2T0.html
mp.jcswjw.cn/article/q4r7S9t3U1.html
mp.jcswjw.cn/article/r5s8T0u4V2.html
mp.jcswjw.cn/article/s6t9U1v5W3.html
mp.jcswjw.cn/article/t7u0V2w6X4.html
mp.jcswjw.cn/article/u8v1W3x7Y5.html
mp.jcswjw.cn/article/v9w2X4y8Z6.html
mp.jcswjw.cn/article/w0x3Y5z9A7.html
mp.jcswjw.cn/article/x1y4Z6a0B8.html
bbs.jcswjw.cn/article/A3b6C8d2E0.html
bbs.jcswjw.cn/article/B4c7D9e3F1.html
bbs.jcswjw.cn/article/C5d8E0f4G2.html
bbs.jcswjw.cn/article/D6e9F1g5H3.html
bbs.jcswjw.cn/article/E7f0G2h6I4.html
bbs.jcswjw.cn/article/F8g1H3i7J5.html
bbs.jcswjw.cn/article/G9h2I4j8K6.html
bbs.jcswjw.cn/article/H0i3J5k9L7.html
bbs.jcswjw.cn/article/I1j4K6l0M8.html
bbs.jcswjw.cn/article/J2k5L7m1N9.html
bbs.jcswjw.cn/article/K3l6M8n2O0.html
bbs.jcswjw.cn/article/L4m7N9o3P1.html
bbs.jcswjw.cn/article/M5n8O0p4Q2.html
bbs.jcswjw.cn/article/N6o9P1q5R3.html
bbs.jcswjw.cn/article/O7p0Q2r6S4.html
bbs.jcswjw.cn/blog/P8q1R3s7T5.html
bbs.jcswjw.cn/blog/Q9r2S4t8U6.html
bbs.jcswjw.cn/blog/R0s3T5u9V7.html
bbs.jcswjw.cn/blog/S1t4U6v0W8.html
bbs.jcswjw.cn/blog/T2u5V7w1X9.html
bbs.jcswjw.cn/blog/U3v6W8x2Y0.html
bbs.jcswjw.cn/blog/V4w7X9y3Z1.html
bbs.jcswjw.cn/blog/W5x8Z0a4A2.html
bbs.jcswjw.cn/blog/X6y9A1b5B3.html
bbs.jcswjw.cn/blog/Y7z0B2c6C4.html
bbs.jcswjw.cn/blog/Z8a1C3d7D5.html
bbs.jcswjw.cn/article/a9b2D4e8E6.html
bbs.jcswjw.cn/article/b0c3E5f9F7.html
bbs.jcswjw.cn/article/c1d4F6g0G8.html
bbs.jcswjw.cn/article/d2e5G7h1H9.html
bbs.jcswjw.cn/article/e3f6H8i2I0.html
bbs.jcswjw.cn/article/f4g7I9j3J1.html
bbs.jcswjw.cn/article/g5h8J0k4K2.html
bbs.jcswjw.cn/article/h6i9K1l5L3.html
bbs.jcswjw.cn/article/i7j0L2m6M4.html
bbs.jcswjw.cn/article/j8k1M3n7N5.html
bbs.jcswjw.cn/article/k9l2N4o8O6.html
bbs.jcswjw.cn/article/l0m3O5p9P7.html
bbs.jcswjw.cn/article/m1n4P6q0Q8.html
bbs.jcswjw.cn/article/n2o5Q7r1R9.html
bbs.jcswjw.cn/article/o3p6R8s2S0.html
bbs.jcswjw.cn/article/p4q7S9t3T1.html
bbs.jcswjw.cn/article/q5r8T0u4U2.html
bbs.jcswjw.cn/article/r6s9U1v5V3.html
bbs.jcswjw.cn/article/s7t0V2w6W4.html
bbs.jcswjw.cn/article/t8u1W3x7X5.html
bbs.jcswjw.cn/article/u9v2X4y8Y6.html
bbs.jcswjw.cn/article/v0w3Y5z9Z7.html
bbs.jcswjw.cn/article/w1x4Z6a0A8.html
bbs.jcswjw.cn/article/x2y5A7b1B9.html
jcswjw.cn/blog/03YR2B47.html
www.jcswjw.cn/blog/92XQ1C36.html
jcswjw.cn/blog/81WP0D25.html
www.jcswjw.cn/article/70VO9E14.html
jcswjw.cn/article/69UN8F03.html
jcswjw.cn/blog/58TM7G92.html
www.jcswjw.cn/blog/47SL6H81.html
jcswjw.cn/blog/36RK5I70.html
www.jcswjw.cn/article/25QJ4J69.html
jcswjw.cn/article/14PI3K58.html
jcswjw.cn/blog/03OH2L47.html
www.jcswjw.cn/blog/92NG1M36.html
jcswjw.cn/blog/81MF0N25.html
www.jcswjw.cn/article/70LE9O14.html
jcswjw.cn/article/69KD8P03.html
jcswjw.cn/blog/58JC7Q92.html
www.jcswjw.cn/blog/47IB6R81.html
jcswjw.cn/blog/36HA5S70.html
www.jcswjw.cn/article/25GZ4T69.html
jcswjw.cn/article/14FY3U58.html
jcswjw.cn/blog/03EX2V47.html
www.jcswjw.cn/blog/92DW1W36.html
jcswjw.cn/blog/81CV0X25.html
www.jcswjw.cn/article/70BU9Y14.html
jcswjw.cn/article/69AT8Z03.html
jcswjw.cn/blog/58ZS7A92.html
www.jcswjw.cn/blog/47YR6B81.html
jcswjw.cn/blog/36XQ5C70.html
www.jcswjw.cn/article/25WP4D69.html
jcswjw.cn/article/14VO3E58.html
jcswjw.cn/blog/03UN2F47.html
www.jcswjw.cn/blog/92TM1G36.html
jcswjw.cn/blog/81SL0H25.html
www.jcswjw.cn/article/70RK9I14.html
jcswjw.cn/article/69QJ8J03.html
jcswjw.cn/blog/58PI7K92.html
www.jcswjw.cn/blog/47OH6L81.html
jcswjw.cn/blog/36NG5M70.html
www.jcswjw.cn/article/25MF4N69.html
jcswjw.cn/article/14LE3O58.html
jcswjw.cn/blog/03KD2P47.html
www.jcswjw.cn/blog/92JC1Q36.html
jcswjw.cn/blog/81IB0R25.html
www.jcswjw.cn/article/70HA9S14.html
jcswjw.cn/article/69GZ8T03.html
jcswjw.cn/blog/2SJM9QS3.html
jcswjw.cn/article/UZYQL8U3.html
www.jcswjw.cn/blog/UZWCLDDU.html
jcswjw.cn/blog/QCOUT7B2.html
www.jcswjw.cn/article/E5GYHNKW.html
www.jcswjw.cn/blog/9TRXFMHC.html
jcswjw.cn/article/U1M1BHF9.html
www.jcswjw.cn/article/W6R5LPQ9.html
jcswjw.cn/blog/N50EZFZG.html
jcswjw.cn/article/G1HB7ZVF.html
www.jcswjw.cn/blog/NU1RUJKF.html
www.jcswjw.cn/article/2CTMMG6T.html
www.jcswjw.cn/article/QIOAHL4L.html
jcswjw.cn/article/IUJNJN6O.html
jcswjw.cn/blog/QLM5KHWQ.html
www.jcswjw.cn/blog/A34GGOQQ.html
jcswjw.cn/article/O3LDZA38.html
www.jcswjw.cn/article/BG4VP7JT.html
jcswjw.cn/article/3BVWH5K8.html
jcswjw.cn/blog/0X82J0IY.html
www.jcswjw.cn/article/H29K4N4X.html
jcswjw.cn/article/JFBH6JU2.html
www.jcswjw.cn/blog/YZ5OWWTD.html
jcswjw.cn/blog/9D5OCP7Q.html
www.jcswjw.cn/article/52ERFXVB.html
www.jcswjw.cn/blog/UHHV3C39.html
jcswjw.cn/blog/KZ2Z56LL.html
jcswjw.cn/article/PPMKKSS9.html
jcswjw.cn/article/RYPUPKVJ.html
www.jcswjw.cn/article/UDDX3CUA.html
jcswjw.cn/article/91OMABSW.html
jcswjw.cn/article/1XVM27UY.html
jcswjw.cn/article/B38SYZCN.html
jcswjw.cn/article/UMRRHM9O.html
www.jcswjw.cn/article/B3N1FU51.html
jcswjw.cn/article/E8UIJODZ.html
jcswjw.cn/blog/X7IEDBSA.html
www.jcswjw.cn/article/YUAVBR11.html
jcswjw.cn/article/LP1ZJYV3.html
jcswjw.cn/blog/EGGUSSEQ.html
jcswjw.cn/article/PJCYFZV5.html
www.jcswjw.cn/blog/451O0KLJ.html
www.jcswjw.cn/article/UR1ZJ8C2.html
jcswjw.cn/blog/QXI5H62Y.html
www.jcswjw.cn/blog/VBJB32JI.html
jcswjw.cn/blog/1QQF4WGJ.html
jcswjw.cn/blog/E8ZC81MQ.html
www.jcswjw.cn/article/32ANP7AN.html
jcswjw.cn/article/1OWXM3NZ.html
www.jcswjw.cn/blog/89S7D65C.html