Thomas Heller於 2013年6月28日星期五UTC+8下午6時48分38秒寫道: > trying out the enum34 module. > > > > What I want to create is a subclass of enum.Enum that is also > > based on ctypes.c_int so that I can better use enum instances > > in ctypes api calls. > > > > When I do this, I get a metaclass conflict: > > > > > > >>> class MyEnum(ctypes.c_int, enum.Enum): > > ... FOOBAR = 0 > > ... > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > TypeError: Error when calling the metaclass bases > > metaclass conflict: the metaclass of a derived class must be a > > (non-strict) subclass of the metaclasses of all its bases > > >>> > > > > > > > > When I do this, it does not work either: > > > > >>> class MyEnum_meta(type(ctypes.c_int), type(enum.Enum)): > > ... pass > > ... > > >>> class MyEnum(ctypes.c_int, enum.Enum): > > ... FOOBAR = 42 > > ... __metaclass__ = MyEnum_meta > > ... > > >>> MyEnum.FOOBAR > > 42 > > >>> > > > > It should have printed '<MyEnum.FOOBAR: 42>'. > > > > Any ideas? > > > > Thanks, > > Thomas
Just use a dictionary for the job. Python i not c/c++. -- http://mail.python.org/mailman/listinfo/python-list