学习Python时的感受,希望大家一起讨论,不对的地方请大家指正。
在调用Python 类中的属性时,按照一定的顺序查找调用的属性:先在当前的实列中找,如果当前实列有,就使用当前实列中的属性值,如果没有就查找抽象类中的属性值。
class Ct3:
ct = 0 # 抽象类属性, 类变量 ct = 0
a = Ct3() # 实例化类a, 类变量 a.ct = 0
b = Ct3() # 实例化类b, 类变量 b.ct = 0
c = Ct3() # 实例化类c, 类变量 c.ct = 0
print(a.ct, b.ct, c.ct) # 1 输出 类变量: 0, 0, 0
a.ct += 10 # 实例化类a调用实列类变量 a.ct
print(a.ct, b.ct, c.ct) # 2 输出 : 10, 0, 0
Ct3.ct += 100 # 类Ct3类变量 Ct3.ct
print(a.ct, b.ct, c.ct) # 3 输出: 10, 100, 100
运行结果:
D:\PycharmProjects\test\venv\Scripts\python.exe D:/PycharmProjects/test/t3.py
0 0 0
10 0 0
10 100 100
进程已结束,退出代码为 0
看到
# 1 输出 类变量:0, 0, 0 显然,实例化类a,b,c中的属性变量a.ct, b.ct, c.ct都没有赋过值,于是顺序查找到抽象类中的值0来使用。
# 2 输出 :10, 0, 0 实例化类a,b,c中的属性变量a.ct被调用赋值&#