相关疑难解决方法(0)

Python枚举,何时何地使用?

Python 3.4.0介绍enum,我已经阅读了doc但仍然不知道它的用法.从我的角度来看,枚举是一种扩展namedtuple类型,可能不是真的.所以这些是我想知道的枚举:

  1. 何时何地使用枚举?
  2. 为什么我们需要枚举?有什么好处?
  3. 什么是枚举?

python enums python-3.4

27
推荐指数
1
解决办法
3585
查看次数

如何正确记录python枚举元素?

我知道我可以像其他任何类一样将Python文档字符串添加到枚举类型。但是,如何向该类型的元素添加文档?

据我所知,存在三种可能性:

class MyEnum(Enum):
    """
    This is my enum type.
    """

    """
    Variant 1
    """
    a = 0,  
    b = 1, # variant 2
    c = 2, """ variant 3 """
Run Code Online (Sandbox Code Playgroud)

但是它们中的任何一个都不能真正持续地工作。如果我调用print(inspect.getdoc(MyEnum.a))任何变体,MyEnum则返回该类型的文档字符串(“这是我的枚举类型”)。Pycharm可以在其快速文档预览中显示变体3,但包含引号和超出列换行符的较长注释将无法正确显示。

是否有关于如何记录Python枚举元素的首选方法或约定?

python documentation enums python-3.x

5
推荐指数
1
解决办法
1970
查看次数

如何重写枚举构造函数?

我想创建一个存储二进制值的枚举,但我可以向其传递任何值(它将存储value % 2)。

\n\n

也就是说:我想使用EnumPython3 中的“官方”类型,但更改构造函数。

\n\n

我尝试了这段代码:\xc2\xa0

\n\n
from enum import Enum\n\nclass Color(Enum):\n    black = 0\n    red = 1\n\n    def __new__(cls, value):\n        super().__new__(cls, value % 2)\n\n    def __str__(self):\n        return self.name\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我收到一个错误:

\n\n
>>> from ZCasino import *\nValueError: 0 is not a valid Couleur\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "<stdin>", line 1, in <module>\n  File "/home/felix/T\xc3\xa9l\xc3\xa9chargements/ZCasino.py", line 12, in <module>\n    class Couleur(Enum):\n  File "/usr/lib/python3.8/enum.py", line 212, in …
Run Code Online (Sandbox Code Playgroud)

python enums constructor overriding python-3.x

4
推荐指数
1
解决办法
4839
查看次数