__slots__
flori
fgrimm at inneo.de
Mon Nov 10 10:49:27 EST 2003
fgrimm at inneo.de (flori) wrote in message news:<9d5f9ae4.0311070836.7503de86 at posting.google.com>...
> i try to greate somthing like this
>
sorry for silly question
my prob is when i try to do this
class ca(object): __slots__ = ("a",)
class cb(ca): __slots__ = ("a","b")
class cc(ca): __slots__ = ("a","c")
class cd(cb,cc): __slots__ = ("a","b","c","d")
in line "class cd(.." thorws a exception
TypeError: multiple bases have instance lay-out conflict
(if cb (or cc) doesn't define __slots__ it works.)
My only solution is to generate a "unsloted" class (_ca)
and genererate a "sloted" class (ca) with only the __slots__ attribute.
when i had to inherit the class i use the "unsloted" class.
like that:
class _ca(object): pass
class ca(object): __slots__ = ("a",)
class _cb(_ca): pass
class cb(_cb): __slots__ = ("a","b")
class _cc(_ca): pass
class cc(_cc): __slots__ = ("a","c")
class _cd(_cb,_cc): pass
class cd(_cd): __slots__ = ("a","b","c","d")
my source does this a metaclass
my question is is their a nicer way to do this?
More information about the Python-list
mailing list