在Python檔案說:
以下將失敗:
class A:
a = 42
b = list(a i for i in range(10))
我運行了它,果然它失敗了:它拋出NameError: name 'a' is not defined. 所以我試圖通過使用A.a而不是a在list引數中修復:
class A:
a = 42
b = list(A.a i for i in range(10))
但這仍然不起作用。它拋出NameError: name **'A'** is not defined.
類名(在本例中為A識別符號)何時系結以便我們可以參考它?我知道A在方法中參考A是有效的,因為當 Python 決議時?類定義,它不執行類方法。例如,以下作業:
class A:
a = 42
# b = list(A.a i for i in range(10))
def foo(self):
print(A)
@classmethod
def bar(cls):
print(A)
@staticmethod
def baz():
print(A)
a = A()
a.foo()
a.bar()
a.baz()
uj5u.com熱心網友回復:
A在類定義塊完成之前不受約束。參考教程:
當類定義正常保留時(通過結尾),會創建一個類物件。這基本上是對由類定義創建的命名空間內容的包裝;我們將在下一節中了解有關類物件的更多資訊。原始區域作用域(在輸入類定義之前生效的那個作用域)被恢復,類物件在此處系結到類定義頭中給出的類名(在示例中為 ClassName)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/351417.html
上一篇:如何回傳指向線性串列中專案的指標
