【发布时间】:2023-01-08 03:57:56
【问题描述】:
我总是纠结于 Enum、IntEnum 等,并且每次使用此 Python 功能时都必须多次重新访问文档。我认为对内部结构有更清晰的了解会很有用。
例如,为什么我不能在此示例中使用命名参数?
class MD_Fields(IntEnum):
ACCOUNT = (0, **identifier=True**)
M_DESCRIPT = (4, False)
def __new__(cls, value: int, identifier: bool):
obj = int.__new__(cls, value)
obj.identifier = identifier
return obj
当然,主要问题是,我如何假装 Enum 是一个 int?我如何告诉 Python 应该将“SOME.ENUM”当作 5 来处理?
【问题讨论】:
-
对不起。刚刚删除了调用。谢谢@TimRoberts。 SO 确实说要分享这个问题:“认识可以回答的人吗?通过电子邮件、Twitter 或 Facebook 分享这个问题的链接。”我认为通过 SO 共享会更充分。为什么那么糟糕?
-
你有 IntEnum 的源代码。它位于标准库的“enum.py”中。您的示例不起作用的原因是您正在创建一个简单的元组。它不是在创建对象。元组没有命名参数。
-
@TimRoberts 谢谢!这是关于命名参数的一个很好的信息!我找到的来源只是“class IntEnum(int, Enum):”“”成员也是(而且必须是)整数的枚举”””