可能重複:
Why do you need explicitly have the 「self」 argument into a Python method?爲什麼實例變量需要「self」才能訪問,但全局變量沒有前綴?
在Python,實例變量必須通過self.x
訪問,但是全局變量可以僅通過寫x
讀取。怎麼來的?
可能重複:
Why do you need explicitly have the 「self」 argument into a Python method?爲什麼實例變量需要「self」才能訪問,但全局變量沒有前綴?
在Python,實例變量必須通過self.x
訪問,但是全局變量可以僅通過寫x
讀取。怎麼來的?
這是一個經常被問到的問題,但實質上是:避免名稱衝突或混淆關於哪個實例或全局變量被訪問。
哲學是「明確比隱含更好」。
那麼爲什麼不按照同樣的原則來處理全局變量呢? – Casebash
如果問題可能是實例和全局變量之間的混淆/名稱遮蔽,則將其中一個命名約定更改爲明確可解決該問題。儘管Python中的「全局變量」並不常見,但導入的模塊等也在全局名稱空間中,並且比Python中的其他任何東西都更常用,因此在全局名稱空間中調用事物的不便慣例將更多地是比調用實例變量名稱空間中的東西更痛苦。 –
@djechlin:這不是一個完全相同的問題。爲什麼不按照同樣的原則來處理全局變量呢? – Casebash