看了人家老哥的栗子,一下对结果就懵逼了,然后掰开揉碎,一顿整 ,看代码的执行顺序。
这才看明白。这老哥挺牛逼的 !面向对象还得整。
# 综合栗子
class PoloBlogObjectTest:
# 类变量
sum = 0
# 初始化方法
def __init__(self, name, age):
# 实例变量
self.name = name
self.age = age
# 类变量
print(f'加1之前{PoloBlogObjectTest.sum}') # 步骤2,8
PoloBlogObjectTest.sum += 1
print(f'加1之后{PoloBlogObjectTest.sum}') # 步骤3,9
# 实例方法
def printNameAge(self):
print(self.name, self.age)
print(f'poloTest1实例化之前{PoloBlogObjectTest.sum}先读类属性sum') # sum == 0 (步骤1)
poloTest1 = PoloBlogObjectTest("小菠萝一号", 24) # 这里走__init__
print(f'poloTest1实例化之后{PoloBlogObjectTest.sum}') # sum == 1 (步骤4)
poloTest1.printNameAge() # 步骤5
print('=======') # 步骤6
print(f'poloTest2实例化之前{PoloBlogObjectTest.sum}') # sum == 1 这时候类属性sum已经变成1了 (步骤7)
poloTest2 = PoloBlogObjectTest("小菠萝二号", 14)
print(f'poloTest2实例化之前{PoloBlogObjectTest.sum}') # sum == 0 (步骤10)
poloTest2.printNameAge() # 步骤11
print(PoloBlogObjectTest.sum) # (步骤12)
运行顺序和结果
poloTest1实例化之前0先读类属性sum
加1之前0
加1之后1
poloTest1实例化之后1
小菠萝一号 24
=======
poloTest2实例化之前1
加1之前1
加1之后2
poloTest2实例化之前2
小菠萝二号 14
2
Process finished with exit code 0
https://www.cnblogs.com/poloyy/p/15178468.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)