Guido van Rossum <guido@digicool.com> wrote, > [Greg Ward, welcome back!] > > * 'super' is a magic object that only makes sense inside a 'def' > > inside a 'class' (at least for now; perhaps it could be generalized > > to work at class scope as well as method scope, but let's keep > > it simple) > > Yes, that's about the only way it can be made to work. The compiler > will have to (1) detect that 'super' is a free variable, and (2) make > it a local and initialize it with the proper magic. Or, to relieve > the burden from the symbol table, we could make super a keyword, at > the cost of breaking existing code. I'm not at all sure I like the idea of 'super'. It's far more magic that I am used to (coming from Python at least). Currently, we spell 'super' like this: class foo(bar): def __repr__(self): return bar.__repr__(self) # that's super! I like the explicit nature of it. As Guido points out however, this ends up being ambiguous when we try to make classes more "instance-like". Now, how do I like to spell super? class foo(bar): def __repr__(self): return bar._.__repr__(self) # now that's really super! or, for those who like the "keyword": class foo(bar): def __repr__(self): super = bar._ return super.__repr__(self) The trick here in the implementation of getattr on the '_'. It return a proxy object for the class. When attributes are accessed through it a different search path is taken. This path is the same path that would be taken by instance attribute look up. In my code, I refer to this object as the 'unbound instance'. Since accessing a function through this object will yield an unbound instance method, the name makes sense to me. -- Donald Beaudry Ab Initio Software Corp. 201 Spring Street donb@init.com Lexington, MA 02421 ...So much code, so little time...
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