先解釋封裝,然后解釋self。
所謂封裝就是“內(nèi)部實現(xiàn)”與“外部使用”的脫離,脫離得越好,封裝得就越好。比如電話撥號,不論用智能機、傳統(tǒng)手機或者座機打電話,撥號都是通過按幾個數(shù)字來完成的,這叫做“外部使用”完全一致。但其實不同機器實現(xiàn)打電話的原理越是完全不同,這叫做“內(nèi)部實現(xiàn)”的不同。
所以封裝得好不好一般不用來形容語言,而是用來形容那些會被反復使用的函數(shù)、類或者某一套接口。
至于python中,類的方法需要顯示地寫第一個參數(shù)(比如self),按照上述封裝的概念可知,self其實與封裝無關(guān)。因為self只在“內(nèi)部實現(xiàn)”的時候出現(xiàn),“外部使用”的時候根本不出現(xiàn)。所以self并不會影響“外部使用”,或者說并不影響封裝程度。
而顯示寫self也有好處。比如,如果類的定義有嵌套(即在類的方法中再定義一個類及其方法),那么完全可以將self改成別的變量名字,以使得內(nèi)部的方法可以使用外部的類的實例,例如: