Let’s suppose I have these classes:
class A():
msg = 'hehehe'
class B(A):
msg = 'hohoho'
class C(B):
pass
and an instance of B or C. How do I get the variable msg from the parent’s class object through this instance?
I’ve tried this:
foo = B()
print super(foo.__class__).msg
but got the message:
TypeError: super() argument 1 must be type, not classobj
If the class is single-inherited:
If the class is multiple-inherited, the question makes no sense because there may be multiple classes defining the ‘msg’, and they could all be meaningful. You’d better provide the actual parent (i.e.
A.msg). Alternatively you could iterate through all direct bases as described in @Felix‘s answer.