Python 2.7 Backport:枚举类不是抽象类枚举的实例
问题描述:
我正在Python 2.7的Enum类的pypi enum34 backport中工作。Python 2.7 Backport:枚举类不是抽象类枚举的实例
考虑以下几点:
from enum import *
class ArtTools(Enum):
pass
class Paintbrushes(ArtTools):
four_inch_brush = 1
two_inch_brush = 2
fan_brush = 3
paint_knife = 4
print type(Paintbrushes.fan_brush) # <enum 'Paintbrushes'>
assert isinstance(Paintbrushes.fan_brush, ArtTools) # True/No Error
print type(Paintbrushes) # <class 'enum.EnumMeta'>
assert isinstance(Paintbrushes, ArtTools) # AssertionError
是否有一个原因画笔不是ArtTools?这看起来像一个错误。
答
Paintbrushes
是类,不是实例,因此它不会是ArtTools
或任何其他类的实例。
这是我的理解,枚举类不应该有实例。如果一个对象(即传递引用)是一个ArtTools,还有另一种方法来断言吗? – Andrew
我很确定'issubclass(Paintbrushes,ArtTools)'会返回true。这可能是对你的修复吗? –
这起作用。谢谢乔恩。 – Andrew