> From: Phillip J. Eby [mailto:pje@telecommunity.com]=20 [attribute lookup...] > > > Also note that special methods are *not* handled specially here. > > > The behavior Aahz is referring to is that slots (e.g. tp_call) on > > > new-style types do not retrieve an instance attribute; they are > > > based purely on class-level data. > >[...] > > > >Wouldn't that be explicitly specified class-level data, i.e. it > >circumvents the __getattr__ hook completely: >=20 > I was focusing on the documenting the attribute lookup=20 > behavior, not the "special methods" behavior. :) =20 Fair enough :-) > My point was only that "special methods" aren't implemented=20 > via attribute lookup, so the attribute lookup rules don't apply. Very true, although I don't think I could find that in the documentation anywhere... RefMan 3.3 paragraph 1, last sentence "Except where mentioned, attempts to execute an operation raise an exception when no appropriate method is defined." comes close, but seems to be contradicted by the "__getattr__" documentation in 3.3.2. [..implementing __len__ through __getattr__..] > >The meta example would have to work to be able to create "true" proxy > >objects(?) >=20 > You can always do this: >=20 > class C(object): > def __len__(self): > return self.getLength() >=20 > def __getattr__(self,attr): > if attr=3D=3D'getLength': > return lambda: 42 >=20 > if you really need to do that. Well... no. E.g. a general RPC proxy might not know what it needs to special case: class MyProxy(object): def __init__(self, server, objID, credentials): self.__obj =3D someRPClib.connect(server, objID, credentials) def __getattr__(self, attr): def send(*args, **kw): self.__obj.remoteExec(attr, args, kw) return send Do you mean defining "stub" methods for _all_ the special methods? (there are quite a few of them...) > >Is this intended behavior? >=20 > You'd have to ask Guido that. :-) The reason I ask is that I'm trying to convert a compiler.ast graph into a .NET CodeDom graph, and the current behavior seemed unnecessarily restrictive... -- bjorn
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4