如何统计频繁增删对象的类的实时对象数量?
实现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
相关产品推荐
相关产品推荐

