創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了含山免費建站歡迎大家使用!小編給大家分享一下Python必須在方法定義和調(diào)用中顯示使用“self”的原因,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
為什么Python必須在方法定義和調(diào)用中顯示使用“self”?
這個想法借鑒了 Modula-3 語言。出于多種原因它被證明是非常有用的。
首先,更明顯的顯示出,使用的是方法或?qū)嵗龑傩远皇蔷植孔兞俊?/strong>
閱讀 self.x 或 self.meth() 可以清楚地表明,即使您不知道類的定義,也會使用實例變量或方法。
在 C++ 中,可以通過缺少局部變量聲明來判斷(假設(shè)全局變量很少見或容易識別) —— 但是在 Python 中沒有局部變量聲明,所以必須查找類定義才能確定。
一些 C++ 和 Java 編碼標(biāo)準(zhǔn)要求實例屬性具有 m_ 前綴,因此這種顯式性在這些語言中仍然有用。
其次,這意味著如果要顯式引用或從特定類調(diào)用該方法,不需要特殊語法。
在 C++ 中,如果你想使用在派生類中重寫基類中的方法,你必須使用 :: 運算符 -- 在 Python 中你可以編寫 baseclass.methodname(self, <argumentlist>)。
這對于 __init__() 方法非常有用,特別是在派生類方法想要擴展同名的基類方法,而必須以某種方式調(diào)用基類方法時。
最后,它解決了變量賦值的語法問題:
為了 Python 中的局部變量(根據(jù)定義!)在函數(shù)體中賦值的那些變量(并且沒有明確聲明為全局)賦值,就必須以某種方式告訴解釋器一個賦值是為了分配一個實例變量而不是一個局部變量,它最好是通過語法實現(xiàn)的(出于效率原因)。
C++ 通過聲明來做到這一點,但是 Python 沒有聲明,僅僅為了這個目的而引入它們會很可惜。
使用顯式的 self.var 很好地解決了這個問題。類似地,對于使用實例變量,必須編寫 self.var 意味著對方法內(nèi)部的非限定名稱的引用不必搜索實例的目錄。
換句話說,局部變量和實例變量存在于兩個不同的命名空間中,您需要告訴 Python 使用哪個命名空間。
看完了這篇文章,相信你對Python必須在方法定義和調(diào)用中顯示使用“self”的原因有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!
標(biāo)題名稱:Python必須在方法定義和調(diào)用中顯示使用“self”的原因-創(chuàng)新互聯(lián)
URL鏈接:http://vcdvsql.cn/article40/dehpeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站、企業(yè)網(wǎng)站制作、動態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容