Enum
类型的作者是否有充分理由实现返回例如__repr__
代替<X.y: z>
(或当X(y=z)
等于X(z)
时使用y
),是Python推荐的有效Python表达式吗?推荐内容如下:如果可能的话,这应该看起来像一个有效的 Python 表达式,可用于重新创建具有相同值的对象(给定适当的环境)
我正在按照规定实现一个模型,该规范规定特定值必须是[字符串之一]“foo”或“bar”,我理解它有效地定义了所谓的枚举值或枚举类型的值。我选择使用
z
StrEnum
类型的问题是,例如,Foobar = StrEnum('Foobar', ('foo', 'bar'))
以我认为不太适合我的需求的格式返回值的文本表示形式:
repr(Foobar('foo'))
我依赖于某些类型的对象(包括 "<Foobar.foo: 'foo'>"
)的表示是“可逆的”,因为在 Foobar
调用的结果上调用
eval
返回的对象相当于传递给
repr
的对象.
我知道我可以通过覆盖例如来“纠正”这个问题
repr
但是如果我解决了错误的问题,我宁愿不编写自己的方法。但是,我也不想使用例如StrEnum.__repr__
或其他,可能更多地涉及Python的序列化设施,因为我没有使用这些设施的经验,我预计我需要花费相当多的时间来评估这些设施将如何应用于我的案例以及它们是否会引入我需要的回归转移到并地址。
如果您想找到所有原因(有三四个不同的线程,有数百篇帖子),您必须搜索