【发布时间】:2017-01-13 11:57:31
【问题描述】:
我想扩展Enum 类并添加一个实用函数,该函数将被其他类使用。
考虑这段代码:
from enum import Enum
class BaseEnum(Enum):
def get_items():
print(__class__)
return __class__.__members__.items()
class DerivedEnum(BaseEnum):
X = 1
Y = 2
print(BaseEnum.get_items())
print(DerivedEnum.get_items())
这显然不能按预期工作,因为__class__ 总是指BaseEnum。
我知道我可以将代码更改为:
from enum import Enum
def get_enum_items(enum_class):
return enum_class.__members__.items()
class AnotherEnum(Enum):
X = 1
Y = 2
def get_items():
return get_enum_items(__class__)
print(AnotherEnum.get_items())
这确实符合我的要求,但要求我为我编写的所有Enum 子类编写完全相同的方法。
Python 中有没有类似__actual_class__ 的东西?我想它需要制作类似虚拟静态方法的东西。
据我了解Enum 类,我们从来没有真正实例化它,所以我看不出有办法使用对实例的引用(例如type(self))。
【问题讨论】:
标签: python class inheritance enums