Ziga Seilnacht wrote: > bruno at modulix wrote: > >>Hi >> >>I'm currently playing with some (possibly weird...) code, and I'd have a >>use for per-instance descriptors, ie (dummy code): > > > <snip> > >>Now the question: is there any obvious (or non-obvious) drawback with >>this approach ? > > > Staticmethods won't work anymore: > > >>>>class Test(object): > > ... @staticmethod > ... def foo(): > ... pass > ... def __getattribute__(self, name): > ... v = object.__getattribute__(self, name) > ... if hasattr(v, '__get__'): > ... return v.__get__(self, self.__class__) > ... return v > ... > >>>>test = Test() >>>>test.foo() > > Traceback (most recent call last): > File "<stdin>", line 1, in ? > TypeError: foo() takes no arguments (1 given) >
Hmmm.... Well, I almost never use staticmethods, but I need to check this out. (a few minutes later) Ok, no apparent impact on classmethods. For staticmethod, a quick fix is: import types > ... def __getattribute__(self, name): > ... v = object.__getattribute__(self, name) > ... if not isinstance(v, types.FunctionType) \ and hasattr(v, '__get__'): > ... return v.__get__(self, self.__class__) > ... return v Thanks Ziga. Anyone else ? Any good reason to *not* do this ? Or is presumably safe ? -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list