python类继承顺序

python类继承顺序,python,inheritance,declaration,Python,Inheritance,Declaration,我有一个test.py文件 class A(B): def display(self): print ("In A") class B: def display(self): print ("In B") 我在运行它时遇到以下错误 回溯(最近一次呼叫最后一次): 有人能详细解释为什么会发生这种奇怪的错误吗?之所以会发生这种情况,是因为python是自上而下解释的。在第一个示例中定义class A(B)的行中,python尚未读取class B 在第二个示例中,B在

我有一个test.py文件

class A(B):
  def display(self):
      print ("In A")

class B:
  def display(self):
    print ("In B")
我在运行它时遇到以下错误 回溯(最近一次呼叫最后一次):


有人能详细解释为什么会发生这种奇怪的错误吗?

之所以会发生这种情况,是因为python是自上而下解释的。在第一个示例中定义
class A(B)
的行中,python尚未读取
class B


在第二个示例中,
B
class A(B)
行中已经知道。这就是它运行的原因。

很简单:当python计算
类A(B):
B仍然没有定义

不幸的是,python没有类原型(或转发声明)


但是,只有当您有两个类需要显式地相互指向时,这才是一个问题。

因为Python在定义它之前不知道
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")