[Python-3000] Fixing super anyone? (original) (raw)
Phillip J. Eby pje at telecommunity.com
Fri Apr 20 20:26:53 CEST 2007
- Previous message: [Python-3000] Fixing super anyone? (reflux)
- Next message: [Python-3000] Fixing super anyone?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
At 10:53 AM 4/20/2007 -0700, Guido van Rossum wrote:
Also, what arguments are passed to the hook? For this purpose the class object is the only thing needed -- but is that always sufficient?
I'd want to have the attribute name as an argument, too, at least for other uses of the hook. PEAK and Chandler both have special metaclasses to do this sort of attribute-class association, and I believe Paste does too (it might be some other project(s) by Ian Bicking, e.g. SQLObject or FormEncode). It comes up pretty much anywhere that people have some sort of object-attribute system. Having a built-in hook for this would be nice.
Ideally, the return value of the hook should then be used as the descriptor, rather than the original one; PEAK uses an approach like this to do things like:
class Whatever:
foo = bar = DelegateTo('otherattribute')
where the foo and bar attributes are being set up to delegate to the foo and bar attributes of self.someattribute. (i.e., foo and bar end up with separate descriptors, because the DelegateTo descriptor's association hook is called twice, once with 'foo' and once with 'bar', and the return values become the actual descriptors used in the class.)
One question, however, would be whether it should refer to the class after decoration, or before. For the super() use case, it would presumably need to be the decorated class, which might make things a bit more complicated.
I also wonder if this hook mightn't be usable to implement abstractmethod as well?
- Previous message: [Python-3000] Fixing super anyone? (reflux)
- Next message: [Python-3000] Fixing super anyone?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]