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
相关产品推荐
相关产品推荐

