python学习面向对象之类变量、实例变量执行顺序

python学习面向对象之类变量、实例变量执行顺序,第1张

看了人家老哥的栗子,一下对结果就懵逼了,然后掰开揉碎,一顿整 ,看代码的执行顺序。
这才看明白。这老哥挺牛逼的 !面向对象还得整。

# 综合栗子
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先读类属性sum1之前01之后1
poloTest1实例化之后1
小菠萝一号 24
=======
poloTest2实例化之前11之前11之后2
poloTest2实例化之前2
小菠萝二号 14
2

Process finished with exit code 0
https://www.cnblogs.com/poloyy/p/15178468.html

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/759380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存