super(type)is a "disconnected" super object. The docs on super discuss this, but do not really specify what a “disconnected” super object is. It is simply a fact that you cannot use them the way you try to use them.
This is perhaps what you want:
>>> super(C, C).foo is B.foo
True
, -? , . , , , , (, , ). :
, . . , super (C1) , c1 :
>>> c1 = C1()
>>> boundsuper = super(C1).__get__(c1, C1)
, , :
, , , . , super(C) . . :
>>> class B(object):
... a = 1
>>> class C(B):
... pass
>>> class D(C):
... sup = super(C)
>>> d = D()
>>> d.sup.a
1
, d.sup.a super(C).__get__(d,D).a, super(C, d).a B.a.
super, , , , . - , .
, . , __sup C super(C):
>>> C._C__sup = super(C)
, ( , , - , MRO , , , , , X X, ).