与Java的封装相比,Python的封装显得没有那么严格。Java中封装通过访问修饰符实现并用this关键字来解决变量名与类变量命名冲突问题。例如,如果Java类的一个类变量或类方法的访问修饰符为private,那么类以外的地方都不能引用到该类变量或类方法,换句话说,该变量或方法对外屏蔽,以确保把不必要对外透露的细节封装起来,使得类与类之间的调用更简单而不需要在意实现的细节。
Python类若想对外屏蔽某属性或方法的话,在属性和方法名前加上 __(两个下划线),即可实现对外隐藏,但是这种隐藏不是严格的。例如
有类属性__name,不能直接访问__name是因为Python解释器对外把__name变量改成了_类名__name,我们仍可以通过_类名__name访问。但我们不应该这么做,既然有意去隐藏该属性,那么我们不应该主动的去破坏封装,而且不同Python的解释器可能会把__name改成不一样的变量名,若执意访问,可能会导致异常的出现。
五、装饰器
装饰器是Python中一个非常方便的工具,利用装饰器可以增大了代码的重用率。介绍装饰器必须先介绍关于函数的一些概念。