Nick Coghlan wrote: > Kay Schluehr wrote: > >> While observing heated discussions about adaption and generic >> functions I wonder if this >> is a good opportunity for a modest complaint about the castration of >> __getattr__ in new style classes. > > > If you want to get full control back, that's what __getattribute__ is > for. . . > > Or are you asking for better access to the bits and pieces of > object.__getattribute__ so that it's easier to customise the operation? > > Cheers, > Nick. > I have likely overestimated the usefullness of __getattr__ for old syle classes in case of calling an operator. I have wrongly asserted that having an instance x of an old style class X and an implementation of __getattr__ on X would pass e.g. '__add__' on a call
>>> x + 7 to __getattr__. Unlike __getattribute__ for new style classes the __getattr__ method actually responds, but it is '__coerce__' that is passed instead of '__add__' and that's not much usefull information. What I'm looking for is capturing the call of an arbitrary special method without implementing it explicitely. This would enable delegating a call on __add__ to another class that implements __add__. This could either be done by empowering __getattribute__ or use the now residual __getattr__ that has no value in case of an __getattribute__ implementation. Of course if we are free to choose a name it would be better to use a non-confusing name e.g. __getspecialattr__ that is used when the attribute is the name of a special method and the method accordingly is neither an instance attribute nor could it be found in the class tree. Ciao, Kay _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com