在研究關於python類屬性和實例屬性時,我開始知道無法在對象方法之外創建對象屬性(或者可能是類方法)。像下面的代碼將在Python中生成一個「NameError」。爲什麼無法在對象方法之外創建對象屬性?
class test(object):
def __init__(self):
self.lst = []
self.str = 'xyz'
爲什麼python不允許這樣做?我不質疑語言創作者的決定,但背後的任何理由。就像,這在技術上是不正確的還是這種行爲的其他缺點。
這是否意味着類甚至在被調用之前或者在創建該類的任何實例之前都被解釋器解析,這與函數中的錯誤不會影響程序,除非該函數被調用的函數不同? – Alinwndrld 2013-03-21 11:28:30
@Alinwndrld:解釋器在找到'class'語句時創建類對象,是的。添加一個'print'到課程主體來查看。類也是對象;你可以傳遞'test'類,你可以引用其中定義的屬性等。爲了讓Python能夠做到這一點,它需要首先執行類體來創建類對象。 – 2013-03-21 11:29:58