公司动态
类变量和实例变量在继承中的表现有什么不同?
类变量与实例变量在继承中的行为差异一、核心结论先记牢类变量支持继承子类可读取父类类变量子类赋值同名类变量会独立一份不影响父类父类修改类变量会同步所有未重写该变量的子类。实例变量不继承实例变量属于单个对象仅创建实例时在__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.cnwww.jcswjw.cnjcswjw.cnmp.jcswjw.cn/article/A2b5C7d1E9.htmlmp.jcswjw.cn/article/B3c6D8e2F0.htmlmp.jcswjw.cn/article/C4d7E9f3G1.htmlmp.jcswjw.cn/article/D5e8F0g4H2.htmlmp.jcswjw.cn/article/E6f9G1h5I3.htmlmp.jcswjw.cn/article/F7g0H2i6J4.htmlmp.jcswjw.cn/article/G8h1I3j7K5.htmlmp.jcswjw.cn/article/H9i2J4k8L6.htmlmp.jcswjw.cn/article/I0j3K5l9M7.htmlmp.jcswjw.cn/article/J1k4L6m0N8.htmlmp.jcswjw.cn/article/K2l5M7n1O9.htmlmp.jcswjw.cn/article/L3m6N8o2P0.htmlmp.jcswjw.cn/article/M4n7O9p3Q1.htmlmp.jcswjw.cn/article/N5o8P0q4R2.htmlmp.jcswjw.cn/article/O6p9Q1r5S3.htmlmp.jcswjw.cn/blog/P7q0R2s6T4.htmlmp.jcswjw.cn/blog/Q8r1S3t7U5.htmlmp.jcswjw.cn/blog/R9s2T4u8V6.htmlmp.jcswjw.cn/blog/S0t3U5v9W7.htmlmp.jcswjw.cn/blog/T1u4V6w0X8.htmlmp.jcswjw.cn/blog/U2v5W7x1Y9.htmlmp.jcswjw.cn/blog/V3w6X8y2Z0.htmlmp.jcswjw.cn/blog/W4x7Y9z3A1.htmlmp.jcswjw.cn/blog/X5y8Z0a4B2.htmlmp.jcswjw.cn/blog/Y6z9A1b5C3.htmlmp.jcswjw.cn/blog/Z7a0B2c6D4.htmlmp.jcswjw.cn/article/a8b1C3d7E5.htmlmp.jcswjw.cn/article/b9c2D4e8F6.htmlmp.jcswjw.cn/article/c0d3E5f9G7.htmlmp.jcswjw.cn/article/d1e4F6g0H8.htmlmp.jcswjw.cn/article/e2f5G7h1I9.htmlmp.jcswjw.cn/article/f3g6H8i2J0.htmlmp.jcswjw.cn/article/g4h7I9j3K1.htmlmp.jcswjw.cn/article/h5i8J0k4L2.htmlmp.jcswjw.cn/article/i6j9K1l5M3.htmlmp.jcswjw.cn/article/j7k0L2m6N4.htmlmp.jcswjw.cn/article/k8l1M3n7O5.htmlmp.jcswjw.cn/article/l9m2N4o8P6.htmlmp.jcswjw.cn/article/m0n3O5p9Q7.htmlmp.jcswjw.cn/article/n1o4P6q0R8.htmlmp.jcswjw.cn/article/o2p5Q7r1S9.htmlmp.jcswjw.cn/article/p3q6R8s2T0.htmlmp.jcswjw.cn/article/q4r7S9t3U1.htmlmp.jcswjw.cn/article/r5s8T0u4V2.htmlmp.jcswjw.cn/article/s6t9U1v5W3.htmlmp.jcswjw.cn/article/t7u0V2w6X4.htmlmp.jcswjw.cn/article/u8v1W3x7Y5.htmlmp.jcswjw.cn/article/v9w2X4y8Z6.htmlmp.jcswjw.cn/article/w0x3Y5z9A7.htmlmp.jcswjw.cn/article/x1y4Z6a0B8.htmlbbs.jcswjw.cn/article/A3b6C8d2E0.htmlbbs.jcswjw.cn/article/B4c7D9e3F1.htmlbbs.jcswjw.cn/article/C5d8E0f4G2.htmlbbs.jcswjw.cn/article/D6e9F1g5H3.htmlbbs.jcswjw.cn/article/E7f0G2h6I4.htmlbbs.jcswjw.cn/article/F8g1H3i7J5.htmlbbs.jcswjw.cn/article/G9h2I4j8K6.htmlbbs.jcswjw.cn/article/H0i3J5k9L7.htmlbbs.jcswjw.cn/article/I1j4K6l0M8.htmlbbs.jcswjw.cn/article/J2k5L7m1N9.htmlbbs.jcswjw.cn/article/K3l6M8n2O0.htmlbbs.jcswjw.cn/article/L4m7N9o3P1.htmlbbs.jcswjw.cn/article/M5n8O0p4Q2.htmlbbs.jcswjw.cn/article/N6o9P1q5R3.htmlbbs.jcswjw.cn/article/O7p0Q2r6S4.htmlbbs.jcswjw.cn/blog/P8q1R3s7T5.htmlbbs.jcswjw.cn/blog/Q9r2S4t8U6.htmlbbs.jcswjw.cn/blog/R0s3T5u9V7.htmlbbs.jcswjw.cn/blog/S1t4U6v0W8.htmlbbs.jcswjw.cn/blog/T2u5V7w1X9.htmlbbs.jcswjw.cn/blog/U3v6W8x2Y0.htmlbbs.jcswjw.cn/blog/V4w7X9y3Z1.htmlbbs.jcswjw.cn/blog/W5x8Z0a4A2.htmlbbs.jcswjw.cn/blog/X6y9A1b5B3.htmlbbs.jcswjw.cn/blog/Y7z0B2c6C4.htmlbbs.jcswjw.cn/blog/Z8a1C3d7D5.htmlbbs.jcswjw.cn/article/a9b2D4e8E6.htmlbbs.jcswjw.cn/article/b0c3E5f9F7.htmlbbs.jcswjw.cn/article/c1d4F6g0G8.htmlbbs.jcswjw.cn/article/d2e5G7h1H9.htmlbbs.jcswjw.cn/article/e3f6H8i2I0.htmlbbs.jcswjw.cn/article/f4g7I9j3J1.htmlbbs.jcswjw.cn/article/g5h8J0k4K2.htmlbbs.jcswjw.cn/article/h6i9K1l5L3.htmlbbs.jcswjw.cn/article/i7j0L2m6M4.htmlbbs.jcswjw.cn/article/j8k1M3n7N5.htmlbbs.jcswjw.cn/article/k9l2N4o8O6.htmlbbs.jcswjw.cn/article/l0m3O5p9P7.htmlbbs.jcswjw.cn/article/m1n4P6q0Q8.htmlbbs.jcswjw.cn/article/n2o5Q7r1R9.htmlbbs.jcswjw.cn/article/o3p6R8s2S0.htmlbbs.jcswjw.cn/article/p4q7S9t3T1.htmlbbs.jcswjw.cn/article/q5r8T0u4U2.htmlbbs.jcswjw.cn/article/r6s9U1v5V3.htmlbbs.jcswjw.cn/article/s7t0V2w6W4.htmlbbs.jcswjw.cn/article/t8u1W3x7X5.htmlbbs.jcswjw.cn/article/u9v2X4y8Y6.htmlbbs.jcswjw.cn/article/v0w3Y5z9Z7.htmlbbs.jcswjw.cn/article/w1x4Z6a0A8.htmlbbs.jcswjw.cn/article/x2y5A7b1B9.htmljcswjw.cn/blog/03YR2B47.htmlwww.jcswjw.cn/blog/92XQ1C36.htmljcswjw.cn/blog/81WP0D25.htmlwww.jcswjw.cn/article/70VO9E14.htmljcswjw.cn/article/69UN8F03.htmljcswjw.cn/blog/58TM7G92.htmlwww.jcswjw.cn/blog/47SL6H81.htmljcswjw.cn/blog/36RK5I70.htmlwww.jcswjw.cn/article/25QJ4J69.htmljcswjw.cn/article/14PI3K58.htmljcswjw.cn/blog/03OH2L47.htmlwww.jcswjw.cn/blog/92NG1M36.htmljcswjw.cn/blog/81MF0N25.htmlwww.jcswjw.cn/article/70LE9O14.htmljcswjw.cn/article/69KD8P03.htmljcswjw.cn/blog/58JC7Q92.htmlwww.jcswjw.cn/blog/47IB6R81.htmljcswjw.cn/blog/36HA5S70.htmlwww.jcswjw.cn/article/25GZ4T69.htmljcswjw.cn/article/14FY3U58.htmljcswjw.cn/blog/03EX2V47.htmlwww.jcswjw.cn/blog/92DW1W36.htmljcswjw.cn/blog/81CV0X25.htmlwww.jcswjw.cn/article/70BU9Y14.htmljcswjw.cn/article/69AT8Z03.htmljcswjw.cn/blog/58ZS7A92.htmlwww.jcswjw.cn/blog/47YR6B81.htmljcswjw.cn/blog/36XQ5C70.htmlwww.jcswjw.cn/article/25WP4D69.htmljcswjw.cn/article/14VO3E58.htmljcswjw.cn/blog/03UN2F47.htmlwww.jcswjw.cn/blog/92TM1G36.htmljcswjw.cn/blog/81SL0H25.htmlwww.jcswjw.cn/article/70RK9I14.htmljcswjw.cn/article/69QJ8J03.htmljcswjw.cn/blog/58PI7K92.htmlwww.jcswjw.cn/blog/47OH6L81.htmljcswjw.cn/blog/36NG5M70.htmlwww.jcswjw.cn/article/25MF4N69.htmljcswjw.cn/article/14LE3O58.htmljcswjw.cn/blog/03KD2P47.htmlwww.jcswjw.cn/blog/92JC1Q36.htmljcswjw.cn/blog/81IB0R25.htmlwww.jcswjw.cn/article/70HA9S14.htmljcswjw.cn/article/69GZ8T03.htmljcswjw.cn/blog/2SJM9QS3.htmljcswjw.cn/article/UZYQL8U3.htmlwww.jcswjw.cn/blog/UZWCLDDU.htmljcswjw.cn/blog/QCOUT7B2.htmlwww.jcswjw.cn/article/E5GYHNKW.htmlwww.jcswjw.cn/blog/9TRXFMHC.htmljcswjw.cn/article/U1M1BHF9.htmlwww.jcswjw.cn/article/W6R5LPQ9.htmljcswjw.cn/blog/N50EZFZG.htmljcswjw.cn/article/G1HB7ZVF.htmlwww.jcswjw.cn/blog/NU1RUJKF.htmlwww.jcswjw.cn/article/2CTMMG6T.htmlwww.jcswjw.cn/article/QIOAHL4L.htmljcswjw.cn/article/IUJNJN6O.htmljcswjw.cn/blog/QLM5KHWQ.htmlwww.jcswjw.cn/blog/A34GGOQQ.htmljcswjw.cn/article/O3LDZA38.htmlwww.jcswjw.cn/article/BG4VP7JT.htmljcswjw.cn/article/3BVWH5K8.htmljcswjw.cn/blog/0X82J0IY.htmlwww.jcswjw.cn/article/H29K4N4X.htmljcswjw.cn/article/JFBH6JU2.htmlwww.jcswjw.cn/blog/YZ5OWWTD.htmljcswjw.cn/blog/9D5OCP7Q.htmlwww.jcswjw.cn/article/52ERFXVB.htmlwww.jcswjw.cn/blog/UHHV3C39.htmljcswjw.cn/blog/KZ2Z56LL.htmljcswjw.cn/article/PPMKKSS9.htmljcswjw.cn/article/RYPUPKVJ.htmlwww.jcswjw.cn/article/UDDX3CUA.htmljcswjw.cn/article/91OMABSW.htmljcswjw.cn/article/1XVM27UY.htmljcswjw.cn/article/B38SYZCN.htmljcswjw.cn/article/UMRRHM9O.htmlwww.jcswjw.cn/article/B3N1FU51.htmljcswjw.cn/article/E8UIJODZ.htmljcswjw.cn/blog/X7IEDBSA.htmlwww.jcswjw.cn/article/YUAVBR11.htmljcswjw.cn/article/LP1ZJYV3.htmljcswjw.cn/blog/EGGUSSEQ.htmljcswjw.cn/article/PJCYFZV5.htmlwww.jcswjw.cn/blog/451O0KLJ.htmlwww.jcswjw.cn/article/UR1ZJ8C2.htmljcswjw.cn/blog/QXI5H62Y.htmlwww.jcswjw.cn/blog/VBJB32JI.htmljcswjw.cn/blog/1QQF4WGJ.htmljcswjw.cn/blog/E8ZC81MQ.htmlwww.jcswjw.cn/article/32ANP7AN.htmljcswjw.cn/article/1OWXM3NZ.htmlwww.jcswjw.cn/blog/89S7D65C.html