为什么我的类变量没有增加?

2024-05-04 21:48:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想描述存储该类实例数量的类实例。代码如下:

class WeAre:
    _x = 0

    def __init__(self):
        self._x += 1

    @property
    def count(self):
        return self._x

    @count.setter
    def count(self, val):
        return None

    @count.deleter
    def count(self):
        return None

    def __del__(self):
        self._x -= 1    

a = WeAre()
print(a.count)
b, c = WeAre(), WeAre(),
a.count = 100500
print(a.count, b.count, c.count)
del b.count
del b
print(a.count)

以下是我的输出:

1
1 1 1
1

我不明白为什么类变量\ux不增加/减少


Tags: 实例代码selfnone数量returninitdef
1条回答
网友
1楼 · 发布于 2024-05-04 21:48:02

在构造函数中,您正在创建实例的变量,该变量会覆盖类变量。因此,您总是使用对象实例的变量

class WeAre:
    _x = 0  # <  class variable
                         #       creates     uses
                         #      object var  class var
                         #
                         #          |         |
    def __init__(self):  #          V         V          
        self._x += 1     # same as self._x = self._x + 1

那就行了:

class WeAre:
    _x = 0

    def __init__(self):
        WeAre._x += 1

但如果需要重写WeAre类,则可能需要重新考虑它

相关问题 更多 >