我正在尝试使用 type(name, base, dict) 动态创建一个 Enum 类。
from enum import Enum
class FriendlyEnum(Enum):
def hello(self):
print(self.name + ' says hello!')
Run Code Online (Sandbox Code Playgroud)
正常的方法工作得很好:
class MyEnum(FriendlyEnum):
foo = 1
bar = 2
MyEnum.foo.hello()
# ->
foo says hello!
Run Code Online (Sandbox Code Playgroud)
但如果我动态尝试:
MyEnum = type('MyEnum',
(FriendlyEnum,),
{'foo':1,'bar':2}
)
MyEnum.foo.hello()
# ->
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/enum.py", line 146, in __new__
enum_members = {k: classdict[k] for k in classdict._member_names}
AttributeError: 'dict' object has no attribute '_member_names'
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
它对于测试父 Enum 类的方法、动态创建具有不同属性和相同继承方法的新 Enum 类可能很有用。
可以调用该类来Enum动态创建新类型。这也适用于EnumEnum
MyEnum = FriendlyEnum('MyEnum', {'foo': 1, 'bar': 2})
MyEnum.foo.hello()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2195 次 |
| 最近记录: |