Python:如何通过派生类实例访问父类对象?

PyN*_*bie 5 python

对不起我的愚蠢问题,但是......我想我有这些课程:

class A():
    msg = 'hehehe'

class B(A):
    msg = 'hohoho'

class C(B):
    pass
Run Code Online (Sandbox Code Playgroud)

以及B或C的实例.如何通过此实例从父类的对象中获取变量'msg'?我试过这个:

foo = B()
print super(foo.__class__).msg
Run Code Online (Sandbox Code Playgroud)

但得到消息:"TypeError:super()参数1必须是类型,而不是classobj".

Tim*_*mol 15

你其实想要使用

class A(object):
    ...
...
b = B()
bar = super(b.__class__, b)
print bar.msg
Run Code Online (Sandbox Code Playgroud)

基类必须是新式类(继承自object)


ken*_*ytm 8

如果该类是单继承的:

foo = B()
print foo.__class__.__bases__[0].msg
# 'hehehe'
Run Code Online (Sandbox Code Playgroud)

如果该类是多重继承的,那么这个问题没有意义,因为可能有多个类定义了'msg',它们都可能是有意义的.你最好提供实际的父母(即A.msg).或者,您可以按照@Felix的答案中所述迭代所有直接基础.