python class继承顺序
python class inheritance order
我有一个文件test.py
class A(B):
def display(self):
print ("In A")
class B:
def display(self):
print ("In B")
我在 运行 它时收到以下错误
追溯(最近一次通话最后一次):
File "/Users/praveen/Documents/test.py", line 1, in <module>
class A(B):
NameError: name 'B' is not defined
但是如果我改变声明的顺序,它运行没有任何错误
class B:
def display(self):
print ("In B")
class A(B):
def display(self):
print ("In A")
谁能详细解释为什么会出现这个奇怪的错误?
发生这种情况是因为 python 被从上到下解释。在第一个示例中定义 class A(B)
的行中,class B
尚未被 python 读取。
在您的第二个示例中,B
已在行 class A(B)
中已知。这就是它运行的原因。
简单:当python求值时class A(B):
B仍未定义,
不幸的是 python 没有 class 原型(或前向声明)
但这只是一个问题,如果您有 2 个 class 明确需要相互指向。
我有一个文件test.py
class A(B):
def display(self):
print ("In A")
class B:
def display(self):
print ("In B")
我在 运行 它时收到以下错误 追溯(最近一次通话最后一次):
File "/Users/praveen/Documents/test.py", line 1, in <module>
class A(B):
NameError: name 'B' is not defined
但是如果我改变声明的顺序,它运行没有任何错误
class B:
def display(self):
print ("In B")
class A(B):
def display(self):
print ("In A")
谁能详细解释为什么会出现这个奇怪的错误?
发生这种情况是因为 python 被从上到下解释。在第一个示例中定义 class A(B)
的行中,class B
尚未被 python 读取。
在您的第二个示例中,B
已在行 class A(B)
中已知。这就是它运行的原因。
简单:当python求值时class A(B):
B仍未定义,
不幸的是 python 没有 class 原型(或前向声明)
但这只是一个问题,如果您有 2 个 class 明确需要相互指向。