簡體   English   中英

python類繼承順序

[英]python class inheritance order

我有一個文件test.py

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

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

運行它時會收到以下錯誤:Traceback(最近一次調用最后一次):

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被解釋為Top-To-Bottom。 在第一個示例中定義class A(B)中, class B尚未被python讀取。

在第二個示例中, B已在行class A(B)已知。 這就是它運行的原因。

simple:當python評估class A(B): B仍未定義,

不幸的是,python沒有類原型(或前向聲明)

但如果您有2個明確需要指向彼此的類,這只是一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM