覆盖打印
班
,你可以定义
__str__
上
元类
:
from enum import Enum, EnumMeta
class MyEnumMeta(EnumMeta):
def __str__(cls):
lines = [f"The {cls.__name__.lower()}s are:"]
for member in cls:
lines.append(f"- {member.name}")
return '\n'.join(lines)
class Color(Enum, metaclass=MyEnumMeta):
RED = 1
GREEN = 2
BLUE = 3
演示:
>>> Color
<enum 'Color'>
>>> print(Color)
The colors are:
- RED
- GREEN
- BLUE
>>> Color.RED
<Color.RED: 1>
>>> print(Color.RED)
Color.RED
类名称被发现:
>>> class Animal(Enum, metaclass=MyEnumMeta):
... cat = 'meow'
... dog = 'woof'
... badger = 'grrr'
...
>>> print(Animal)
The animals are:
- cat
- dog
- badger