[英]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.