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

Python Enum类:能否将__str__内的_dshortsuit设为class variable优化内存?

问题解答
  • 你的判断完全正确:每次调用str()方法时,都会在方法内部重新创建_dshortsuit字典,确实会额外消耗内存和初始化时间。
  • 当然可以把这个字典设为类变量,这样整个Suit类只会维护一份字典实例,避免重复创建的开销。

优化后的代码如下:

class Suit(Enum):
    Clubs, Diamonds, Hearts, Spades = range(1, 5)
    
    # 定义为类变量,仅初始化一次
    _dshortsuit = {
        Clubs: 'c', Diamonds: 'd', Hearts: 'h', Spades: 's'
    }
    
    def __str__(self):
        return self._dshortsuit[self]

这样修改后,调用str(Suit.Clubs)依然会正确返回'c',同时内存占用更高效——字典只会在类加载时创建一次,而不是每次调用str()都重建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:15:37