如何计算自定义类的实例数?

2024-10-01 07:29:53 发布

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

我想计算一下Python3.x中自定义类及其子类的实例数?非常感谢你。在

我试过班子成员的方式,但不管用。以下是代码

在基准.py在

class Base:

    ## class members
    __counter = int(0)
    @classmethod
    def _count(cls):
        cls.__counter += 1
        return cls.__counter

    def __init__(self):
        self.__id = self._count()

    @property
    def id(self):
        return self.__id

子基1.py

^{pr2}$

底基层2.py

from Base import Base

class SubBase2(Base):
    def __init__(self):
        Base.__init__(self)

在主.py在

from SubBase1 import SubBase1
from SubBase2 import SubBase2

s1 = SubBase1()
s2 = SubBase2()

print('s1-id', s1.id)
print('s2-id', s2.id)

代码输出:

s1-id 1
s2-id 1

但是,我想要的是:

s1-id 1
s2-id 2

我该怎么办?首先非常感谢你! 附言: 环境:ubuntu14.04+python3.4+PyDev


Tags: frompyimportselfidbaseinitdef
1条回答
网友
1楼 · 发布于 2024-10-01 07:29:53

cls上设置属性将在子类上设置一个新的属性。您必须在Base上显式设置此选项:

class Base:
    __count = 0

    @classmethod
    def _count(cls):
        Base.__count += 1
        return Base.__count

    def __init__(self):
        self.__id = self._count()

    @property
    def id(self):
        return self.__id

如果您尝试在cls上设置属性,则会为每个类创建唯一的计数器,而不是与所有子类共享。在

演示:

^{pr2}$

相关问题 更多 >