copysort patch, was RE: [Python-Dev] inline sort option (original) (raw)

Guido van Rossum guido at python.org
Tue Oct 28 12:42:16 EST 2003


Hmmm... maybe one COULD make a custom descriptor that does support both usages... and maybe it IS worth making the .sorted (or whatever name) entry a case of exactly such a subtle custom descriptor...

Thanks for the idea, I can use this as a perverted example in my talk at Stanford tomorrow. Here it is:

import new

def curry(f, x, cls=None): return new.instancemethod(f, x)

class MagicDescriptor(object): def init(self, classmeth, instmeth): self.classmeth = classmeth self.instmeth = instmeth def get(self, obj, cls): if obj is None: return curry(self.classmeth, cls) else: return curry(self.instmeth, obj)

class MagicList(list): def _classcopy(cls, lst): obj = cls(lst) obj.sort() return obj def _instcopy(self): obj = self.class(self) obj.sort() return obj sorted = MagicDescriptor(_classcopy, _instcopy)

class SubClass(MagicList): def str(self): return "SubClass(%s)" % str(list(self))

unsorted = (1, 10, 2) print MagicList.sorted(unsorted) print MagicList(unsorted).sorted() print SubClass.sorted(unsorted) print SubClass(unsorted).sorted()

--Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list