Python 类变量和实例变量重叠时的奇怪行为

问题描述 投票:0回答:1
class TestClass():
    class_v = 0
    
    def __init__(self) -> None:
        self.class_v += 1
        TestClass.class_v += 1
        
        
        
print(TestClass.class_v) # 0

class_a = TestClass()
class_b = TestClass()

print(f'class_a.class_v = {class_a.class_v}') # 1
print(f'class_b.class_v = {class_b.class_v}') # 2
print(TestClass.class_v) # 2

在上面的python代码中,当类变量和实例变量的名称相同时,使用同一个类创建了两个实例,但在导入变量时值不同。如果是实例变量,则两者都必须为1,如果是类变量,则两者都必须为2。python是如何工作的?

# ex
TestClass.class_v += 1
self.class_v += 1

如果更改上面代码块的顺序,则会输出 2 和 3,而不是 1 和 2。

python variables
1个回答
-1
投票

Python 是如何工作的?

根据随机备注

如果实例和类中都出现相同的属性名称, 然后属性查找优先考虑实例

所以python首先查找实例变量,如果不存在则使用类属性。

© www.soinside.com 2019 - 2024. All rights reserved.