如何在python枚举中更新name属性?

2024-09-28 01:59:31 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中执行基本Enum时:

from enum import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

Color.RED.name  # "RED"

name属性允许获取项目的字符串表示形式,该字符串表示形式正好是属性的strigified名称:RED=>;“红色”

是否有方法使用dict或factory更新此规则,以便例如:

Color.RED.name  # "my color is RED"

Tags: 项目字符串namefromimport属性greenenum
1条回答
网友
1楼 · 发布于 2024-09-28 01:59:31

在对Enum的源代码进行了一些挖掘之后,我发现name属性实际上是一个@DynamicClassAttribute,因此:

from types import DynamicClassAttribute
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

    @DynamicClassAttribute
    def name(self):
        name = super(Color, self).name
        return f"my name is {name}"

Color.RED.name  # "my name is RED"

我会成功的

相关问题 更多 >

    热门问题