Python enum.enum:“;TypeError:“uuu init”uuuuuuu()接受2个位置参数,但给出了3个;

Python enum.enum:“;TypeError:“uuu init”uuuuuuu()接受2个位置参数,但给出了3个;,python,enums,typeerror,Python,Enums,Typeerror,当我跑的时候 import enum class MyEnum(enum.Enum): FIRST = (1, 0) SECOND = (2, 1) THIRD = (3, 2) FOURTH = (4, 3) changeMe = (0, 5) def __init__(self, changeMe): self.changeMe.value[0] = changeMe 我得到: File "C:\Program Fi

当我跑的时候

import enum
class MyEnum(enum.Enum):
    FIRST = (1, 0)
    SECOND = (2, 1)
    THIRD = (3, 2)
    FOURTH = (4, 3)
    changeMe = (0, 5)
    def __init__(self, changeMe):
        self.changeMe.value[0] = changeMe
我得到:

File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\enum.py", line 227, in __new__
    enum_member.__init__(*args)
TypeError: __init__() takes 2 positional arguments but 3 were given

有人能帮我找出发生此错误的原因,以及我如何修复它吗?

当您创建枚举时,您的
\uuuuu init\uuuuuu
上方的值将传递给启动器。
因此,您可以传递,例如,
FIRST=(1,0)
,将
self
,这样您就得到了3个参数。
但是,在您的
\uuuuu init\uuuuuuuu
中,您只在寻找2个参数,如果您确实查看了
self
一个参数,则为1

要更正此问题,可以使用以下方案替换第一行:

FIRST = (1,0) ==> FIRST = ([1,0])

能告诉我们你的代码吗?在哪里创建MyEnum实例?欢迎。您希望得到什么?@AdrienKaczmarek看起来这个错误是在创建类本身时而不是在创建实例时引发的。您能提供完整的错误吗?您已经重新定义了
\uuuu init\uuuu
方法,它无法接受实例化枚举所需的参数。因此,当创建枚举时,它会失败,并出现您看到的错误。删除
\uuuu init\uuu
方法,您的代码应该可以正常工作。如果需要
\uuuu init\uuuu
方法,可能不应该创建枚举,因为它们通常在运行时没有重新分配值。当我这样做时,会出现一个新错误:
第9行,在uuuu init\uuuu self.changeMe.value[0]=changeMe AttributeError:“MyEnum”对象没有属性“changeMe”
谢谢您的回答!我不明白您如何处理此
Enum
。您不能更改枚举数的值,但可以在枚举数上构建函数来处理其值。你能多描述一下你要达到的目标吗?这样我们才能更好地帮助你?