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或任何其他类的实例。

+0

这是我的理解,枚举类不应该有实例。如果一个对象(即传递引用)是一个ArtTools,还有另一种方法来断言吗? – Andrew

+1

我很确定'issubclass(Paintbrushes,ArtTools)'会返回true。这可能是对你的修复吗? –

+1

这起作用。谢谢乔恩。 – Andrew