Problems with subclassing enum34

Ethan Furman ethan at stoneleaf.us
Fri Jun 28 13:09:49 EDT 2013


On 06/28/2013 08:32 AM, Thomas Heller wrote:
> Am 28.06.2013 17:25, schrieb Thomas Heller:
>> Robert Kern:
>>
>>>
>>> enum.EnumMeta uses super() in its __new__() implementation but
>>> _ctypes.PyCSimpleType doesn't. Thus, only
>>> _ctypes.PyCSimpleType.__new__() gets a chance to run. Switching the
>>> order of the two might work.
>>>
>>
>> Robert found the problem but I'm unsure if there is a solution.
>> Also I'm unsure whether this is a bug in ctypes or in enum or if
>> they are simply incompatible.
>
> I forgot to mention that switching the order of metaclasses didn't work.

Here's the traceback:

Traceback (most recent call last):
   File "ct.py", line 7, in <module>
     class MyEnum(ctypes.c_int, Enum):
   File "/home/ethan/source/enum/enum/py2_enum.py", line 149, in __new__
     enum_class = super(EnumMeta, metacls).__new__(metacls, cls, bases, classdict)
TypeError: Error when calling the metaclass bases
     _ctypes.PyCSimpleType.__new__(MyEnum_meta) is not safe, use type.__new__()

Not sure how to fix that.

--
~Ethan~



More information about the Python-list mailing list