You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计频繁增删对象的类的实时对象数量?

实现Enemy类的对象计数功能

要实现创建对象时计数加1、删除时计数减1,并且能随时查看当前对象数量,可以通过类变量结合构造方法__init__和析构方法__del__来实现,具体代码如下:

class Enemy:
    # 类变量,用于记录当前Enemy对象的数量
    count = 0

    def __init__(self, Name, MaxHp, Hp, Def, Atk, Stat, StatCd):
        # 初始化实例属性
        self.Name = Name
        self.MaxHp = MaxHp
        self.Hp = Hp
        self.Def = Def
        self.Atk = Atk
        self.Stat = Stat
        self.StatCd = StatCd
        # 创建对象时计数加1
        Enemy.count += 1

    def __del__(self):
        # 删除对象时计数减1
        Enemy.count -= 1

# 创建对象
e1 = Enemy("Green Slimelet", 10, 10, 0, 3, "none", 0)
e2 = Enemy("Green Slime", 25, 25, 2, 8, "none", 0)
# 查看当前对象数量
print(f"当前Enemy对象数量: {Enemy.count}")  # 输出:当前Enemy对象数量: 2

del e1
# 再次查看数量
print(f"删除e1后Enemy对象数量: {Enemy.count}")  # 输出:删除e1后Enemy对象数量: 1

关键说明:

  • 类变量count:属于整个Enemy类,所有实例共享这个变量,用来统一统计对象数量。
  • __init__方法:每次创建Enemy实例时自动调用,完成实例属性初始化的同时,将类变量count加1。
  • __del__方法:当对象被垃圾回收(比如执行del语句,或者对象不再被引用)时自动调用,将count减1。
  • 查看数量:直接通过Enemy.count访问类变量即可获取当前对象总数,也可以封装成类方法(比如@classmethod def get_count(cls): return cls.count)来更规范地获取。

注意:__del__的执行时机由Python的垃圾回收机制决定,并非执行del语句后立刻触发,但对于大多数场景来说,这种方式已经能满足计数需求。

内容的提问来源于stack exchange,提问作者ItzMercury5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 01:15:52