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

如何使用Python Dataclass实现类计数器的最佳方案?

使用Python Dataclass实现类计数器的最佳方式

普通类的实例计数器实现

先看传统类的实现方式,通过类变量和构造函数统计实例数量:

class geeks:
    
    # 用于统计类的实例数量
    counter = 0
  
    # geeks类的构造函数
    def __init__(self,name):
        self.name = name
        # 计数器自增
        geeks.counter += 1

Dataclass的实现方案

Dataclass会自动生成__init__方法,借助__post_init__钩子实现计数器逻辑是最贴合Dataclass设计的方式。

基础实现

from dataclasses import dataclass

@dataclass
class Geeks:
    # 类级计数器,统计实例数量
    counter = 0
    name: str

    def __post_init__(self):
        # 每次实例化时计数器自增
        Geeks.counter += 1

每次创建Geeks实例时,自动生成的__init__执行完毕后,__post_init__会被调用,完成计数器自增。

支持子类的扩展实现

如果需要子类拥有独立的计数器,可以用type(self)引用当前类,避免硬编码父类名称:

from dataclasses import dataclass

@dataclass
class Geeks:
    counter = 0
    name: str

    def __post_init__(self):
        type(self).counter += 1

# 子类示例
@dataclass
class SubGeeks(Geeks):
    age: int

# 测试效果
g1 = Geeks("Alice")
g2 = Geeks("Bob")
sg1 = SubGeeks("Charlie", 25)

print(Geeks.counter)    # 输出:2
print(SubGeeks.counter) # 输出:1

这种写法让父类和子类的计数器相互独立,更适配继承场景的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:50:11