我对编程还很陌生,在理解这段代码的输出时遇到了一些困难。
#testclass.py
class TestCount:
count = 0
def __init__(self):
self.attr1 = TestCount.count
self.attr2 = TestCount.count + 1
TestCount.count += 2
x = TestCount()
y = TestCount()
print(x.attr1, x.attr2)
print(y.attr1, y.attr2)
这是我目前正在学习的一本书中一个更大示例的重写。当运行此代码时,它给出:
0 1
2 3
当我期望它是:
0 1
0 1
我在这里缺少的基本原理是什么?我将 y 视为一个新实例,但它似乎正在从 x 停止的地方继续。抱歉,如果我没有清楚地解释自己,但我是新手。
最佳答案
count
是类的属性,而不是实例的属性。这意味着该值由所有实例共享。
您正在使用 TestCount.count
初始化 attr1
,然后将其增加 2
。因此,第二个实例将从将 attr1
设置为 2
开始,对于第三个实例 4
,依此类推。
如果您希望使用 0
和 1
初始化两个属性(attr1
和 attr2
),您应该这样做:
class TestCount:
def __init__(self):
self.attr1 = 0
self.attr2 = 1
矿石信息,建议阅读Classes官方 Python 教程中的部分。
关于python - 无法理解 python 中的某些类代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925017/