On Feb 8, 8:15 pm, Thomas Heller <[EMAIL PROTECTED]> wrote: > I agree with most of the posters is this thread that it is confusing to spread > the definition of a class over several places or files. > > But, there are cases where the trick come in handy - when classes are created > not by class statements. > > In ctypes, for example, a pointer type to a ctypes type is created by calling > the POINTER function which creates a new class. When you have done this, the > usual way to add additional methods to the new class is by assigning them > like this: > > from ctypes import * > > pointer_to_c_int = POINTER(c_int) > > @classmethod > def from_param(cls, value): > ... do something ... > > pointer_to_c_int.from_param = from_param > > IMO, using the tricky class in the recipes mentioned above, you can write > instead: > > class pointer_to_c_int(partial, POINTER(c_int)): > @classmethod > def from_param(cls, value): > ... do something ... > > Thomas
Using a simple decorator like this seeems a better option to me: def attach_to(cls): def attach_method(meth): setattr(cls, meth.__name__, meth) return meth return attach_meth @attach_to(pointer_to_c) @classmethod def from_param(cls, value): ... do something ... Michele Simionato -- http://mail.python.org/mailman/listinfo/python-list