[Python-3000] Fixing super anyone?
Tim Delaney
tcdelaney at optusnet.com.au
Wed Apr 25 03:20:54 CEST 2007
From: "Tim Delaney" <tcdelaney at optusnet.com.au>
> I've been off sick from work for over a week - I've been following this
> discussion, but now I think I've got something which matches all the
> criteria we've been discussing, so I've changed my subscription address
> temporarily to my home one.
>
> It involves bytecode hacking for now, as well as a metaclass. The code is
> attached. It's based partially off my 'self.super' recipe, but doesn't
> need
> to use sys._getframe().
Oh - some output ...
>>> class autosuper(object):
... __metaclass__ = _autosuper
...
>>> class A(autosuper):
... def f(self):
... print 'A:', super
...
>>> class B(A):
... def f(self):
... print 'B:', super
... super.f()
...
>>> class C(A):
... def f(self):
... print 'C:', super
... super.f()
...
>>> class D(B, C):
... def f(self):
... print 'D:', super
... super.f()
...
>>> D().f()
D: <super: <class 'D'>, <D object>>
B: <super: <class 'B'>, <D object>>
C: <super: <class 'C'>, <D object>>
A: <super: <class 'A'>, <D object>>
Tim Delaney
More information about the Python-3000
mailing list