super with only one argument
steven.bethard at gmail.com
Mon Mar 14 18:40:23 CET 2005
When would you call super with only one argument? The only examples I
can find of doing this are in the test suite for super. Playing around
py> class A(object):
... x = 'a'
py> class B(A):
... x = 'b'
py> s = super(B)
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
AttributeError: 'super' object has no attribute 'x'
So I can't access class attributes with a single-argument super.
You can see that there are some interesting attributes on a super object:
py> for name in dir(s):
... if not hasattr(object, name):
... print name, getattr(s, name)
__get__ <method-wrapper object at 0x011FD050>
__thisclass__ <class '__main__.B'>
Looks like I can call the descriptor machinery directly to get an attribute:
py> s.__get__(B, B()).x
But this doesn't seem horribly useful. And __self__, __self_class__ and
__thisclass__ are readonly, so I can't bind a super object to an
instance once it's been created.
So what's the use case?
Thanks in advance,
P.S. The context here is that I'm trying to submit a patch to clarify
the docs on super a bit. But I realized that I don't actually
understand its behavior with only a single argument...
More information about the Python-list