PyNewbie PyNewbie - 11 months ago 40
Python Question

Python: How to access parent class object through derived class instance?

I'm sorry for my silly question, but... let's suppose I have these classes:

class A():
msg = 'hehehe'

class B(A):
msg = 'hohoho'

class C(B):

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".

Answer Source

If the class is single-inherited:

foo = B()
print foo.__class__.__bases__[0].msg
# 'hehehe'

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.