所谓封装就是“内部实现”与“外部使用”的脱离,脱离得越好,封装得就越好。比如电话拨号,不论用智能机、传统手机或者座机打电话,拨号都是通过按几个数字来完成的,这叫做“外部使用”完全一致。但其实不同机器实现打电话的原理越是完全不同,这叫做“内部实现”的不同。
所以封装得好不好一般不用来形容语言,而是用来形容那些会被反复使用的函数、类或者某一套接口。
至于python中,类的方法需要显示地写第一个参数(比如self),按照上述封装的概念可知,self其实与封装无关。因为self只在“内部实现”的时候出现,“外部使用”的时候根本不出现。所以self并不会影响“外部使用”,或者说并不影响封装程度。
而显示写self也有好处。比如,如果类的定义有嵌套(即在类的方法中再定义一个类及其方法),那么完全可以将self改成别的变量名字,以使得内部的方法可以使用外部的类的实例,例如: