會發生什麼情況是您正在嘗試在班級的正文中使用打印命令。當一個類被加載到內存中時,類的主體只被讀取一次。
從類身體,你不能訪問父類的屬性是這樣的:
print "dad and %s" % dadthing
,因爲變量dadthing並不真正存在於子類範圍。這就是解釋器告訴你變量沒有被定義的原因。
如果您要訪問從該點的父類的屬性,這將是這樣:
print "dad and %s" % dad.dadthing #calling a class property
如果你試試這個,甚至沒有實例化類,你會看到該變量打印,因爲你正在調用一個類屬性,而不是一個實例屬性。
class dad():
dadthing = "i like pandas"
class son(dad):
print dad.dadthing #calling a class property
您必須從__init__函數調用實例屬性。 __init__方法是構造函數。當完全創建對象時調用此方法。
class dad():
dadthing = "i like pandas"
class son(dad):
def __init__(self):
print "dad and %s" % self.dadthing
x = son()
下面是在Python中定義類時發生的情況的深入說明http://eli.thegreenplace.net/2012/06/15/under-the-hood-of-python-類定義。基本上,在類聲明之下寫入的語句在類存在之前執行。 – jdehesa 2014-10-09 15:42:14
你是對的@javidcf。如果說父級的財產不能從那裏獲得,那將是更正確的。 – miso 2014-10-09 15:45:56