我对python 2.7.12中的以下错误感到困惑 假设我们在类中有一个类定义,类似于:
class C(object):
def __init__(self):
print "class C"
class D(object):
def __init__(self):
print "class D"
class A(D):
class B(C):
def __init__(self):
# Strangely here B is "not defined", why?
super(B, self).__init__()
print "class B"
def __init__(self):
super(D, self).__init__()
print "class A"
def do_something(self):
b_class = self.B()
print "b_class within A : {}".format(b_class)
a_class = A()
a_class.do_something()
但是如果我们在类B
的范围之外提取类A
的定义,
一切顺利。
在嵌套类中调用时,我们是否需要以不同方式使用“super”?我无法理解为什么它的使用在嵌套类的内部或外部会有所不同。有什么指针吗?
答案 0 :(得分:7)
问题不是子类或超类,而是嵌套。 B
本身未定义,只有A.B
。
请注意,在Python中,几乎没有一个很好的理由来嵌套类。
答案 1 :(得分:4)
您需要使用其全名GROUP BY
:
B
A.B