"Bruno Desthuilliers" <[EMAIL PROTECTED]> ha scritto nel messaggio news:[EMAIL PROTECTED] > Indeed. You explicitely raise, so the lookup stops here. You'd need to > explicitely call on superclass instead to have B.__getattr__ called, ie: > > class A(object): > def __getattr__(self, name): > if name == 'a': > return 1 > return super(A, self).__getattr__(name) > > class B(object): > def __getattr__(self, name): > if name == 'b': > return 2 > return super(B, self).__getattr__(name)
Hi Bruno, this is an interisting point. Just to understand better: when I raise an AttributeError the search stops but if I call a superclass (that for my understanding raises an AttributeError) the search continues. At this point I suspect that the search is doing something else, like checking if the class is at the top of the hierarchy. Do you know where I can look for this, probably in the core code of Python? > > Since A and B are not written by me I can only work on C. > > Really ? You know, Python is a *very* dynamic language. If A and B are > ordinary Python classes (ie: not builtin types, not C extensions, etc), > you can monkeypatch them. But that's not necessarily the best thing to > do (it would require more work than your actual solution). I know that I can do whatIwant with class A and class B (monkeypatch!) but I prefer to concentrate on my code and write a clean solution. Thanks for your help. Enrico -- http://mail.python.org/mailman/listinfo/python-list