gpt4 book ai didi

Python:静态变量(或者,class.some_var 和 inst.some_var 之间的区别)

转载 作者:行者123 更新时间:2023-11-28 22:40:05 25 4
gpt4 key购买 nike

我写了一个简单的类

class Test:

stat = 0

def __init__(self):
self.inst = 10

def printa(self):
print Test.stat
print self.inst

现在我已经创建了这个类的两个对象

$ a = Test()
$ b = Test()

当我说 a.printa()b.printa() 时,它输出 0 10 这是可以理解的。

但是当我说

$ a.stat = 2
$ print a.stat

它会输出

2

但是当我说 a.printa()它会输出

1
10

objInstance.staticVarClassName.staticVar 有什么区别?它在内部做什么?

最佳答案

除非你做一些事情来改变属性分配的工作方式(使用 __setattr__ 或描述符),分配给 some_object.some_attribute 总是分配给一个实例属性,甚至如果已经有同名的类属性

因此,当你这样做的时候

a = Test()

a.stat 是类属性。但是在你这样做之后

a.stat = 2

a.stat 现在引用实例属性。类属性不变。

关于Python:静态变量(或者,class.some_var 和 inst.some_var 之间的区别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34102701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com