理解Python面向对象及装饰器

Python支持多继承的好处是使得之类能轻松的获取多个父类的属性。但是要注意Python3和Python2的选择继承顺序的规则不一样。除了就近原则(如果父类找到该方法,则不需要继续父类的父类中查找该方法),Python3的是从左到右,广度优先;而Python2则是从左到右深度优先。举例如下


Python类若想对外屏蔽某属性或方法的话,在属性和方法名前加上 __(两个下划线),即可实现对外隐藏,但是这种隐藏不是严格的。例如
有类属性__name,不能直接访问__name是因为Python解释器对外把__name变量改成了_类名__name,我们仍可以通过_类名__name访问。但我们不应该这么做,既然有意去隐藏该属性,那么我们不应该主动的去破坏封装,而且不同Python的解释器可能会把__name改成不一样的变量名,若执意访问,可能会导致异常的出现。
五、装饰器
装饰器是Python中一个非常方便的工具,利用装饰器可以增大了代码的重用率。介绍装饰器必须先介绍关于函数的一些概念。
- 高阶函数:一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
- 嵌套函数:在一个函数内定义另一个另一个函数,里面的函数叫作内层函数
- L (Local) 局部作用域
- E (Enclosing) 闭包函数外的函数中
- G (Global) 全局作用域
- B (Built-in) 内建作用域
变量会以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,全局找不到再去内建作用域中找,直到找到或者找不到(抛出异常)。并且局部变量会屏蔽外部变量。例子如下











THE END