gpt4 book ai didi

python - 是否可以在没有参数的情况下调用继承 Enum 的类的构造函数?

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:50 25 4
gpt4 key购买 nike

我有多个类,有些继承了 Enum,有些则没有,它们最终都混合在大数组中,如下所示:

from enum import Enum

class TestEnum(Enum):
VAL_A = 0
VAL_B = 1

class TestNotEnum():
def __init__(self):
self.var = 1

因为我希望有一个尽可能简单的代码供其他人使用,所以我想以相同的方式调用所有类的构造函数,以避免尽可能多的混淆。

这就是我想要初始化它们的方式:

classes = [TestEnum(), TestNotEnum()]

TestNotEnum 类没有问题,但 TestEnum 抛出以下异常:TypeError: __call__() missing 1 required positional argument: 'value' 。这是由于我对 Enum 的(错误的)使用。

我该怎么做才能让 TestEnum 类仍然继承 Enum 并且拥有一个没有参数的构造函数?

我尝试了以下(以及一些类似的调整):

class TestEnum(Enum):
VAL_A = 0
VAL_B = 1
def __init__(self):
super(TestEnum, self).__init__()

但我最终只会遇到不同的错误,例如 TypeError: __init__() takes 1 positional argument but 2 were given

最佳答案

你有一个选择是让工厂函数像你的枚举一样命名:

from enum import Enum

class TestEnum(Enum):
VAL_A = 0
VAL_B = 1

def TestEnum1():
return TestEnum

class TestNotEnum():
def __init__(self):
self.var = 1


instances = [TestEnum1(), TestNotEnum()]
print(instances)

输出:

[<enum 'TestEnum'>, <__main__.TestNotEnum object at 0x03648E30>]

关于python - 是否可以在没有参数的情况下调用继承 Enum 的类的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55851628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com