Ziga Seilnacht schrieb: > Thomas Heller wrote: >> >> Do you have a pointer to that post? >> > > I think that he was refering to this post: > http://mail.python.org/pipermail/python-list/2006-December/416241.html > > If you are interested in various implementations there is also this: > http://mail.python.org/pipermail/python-list/2006-August/396835.html > > and a module from PyPy: > http://mail.python.org/pipermail/python-dev/2006-July/067501.html > > which was moved to a new location: > https://codespeak.net/viewvc/pypy/dist/pypy/tool/pairtype.py?view=markup >
Thanks for these links. It seems they all (including Martin's partial) implementation all use more or less the same trick (or hack ;-). 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 -- http://mail.python.org/mailman/listinfo/python-list