概述
- 面向过程编程
 - 函数式编程
 - 面向对象编程
 
现在,JAVA8 也加入了函数式编程了,现在我简要的记录一下Python的面向对象编程,以及Python面向对象编程时使用的黑魔法,尽管对于Python来说函数是一等公民,当开发大型可维护项目时,面向对象编程和设计模式还是很有必要的。
类
- 封装
 - 继承
 - 多态
 
Python有新式类和经典类之分,当然,这是对于Python2.x而言,对于Python3.x默认是新式类。对于Python2.x,继承object为新式类,没有继承object类则为经典类,其中,新式类支持用super(A,self).__init__()和A.__init__(self)调用父类构造方法,经典类仅支持用A.__init__(self)调用父类构造方法,Python支持可选参数类型,传参方式多样,函数重载就显得鸡肋了,所以Python正常情况下不支持函数重载。
- Python类的写法
 

- Python经典类
 

- Python新式类
 

Python由于历史原因导致多继承方法存在多样性,其中经典类是深度优先搜索方法,新式类是广度优先搜索。Python的多态和C# Java不同,Python崇尚“鸭子类型”。“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”我们并不关心对象是什么类型,到底是不是鸭子,只关心行为"。
#coding=utf-8  
class Duck:  
    def quack(self):  
        print "Quaaaaaack!"  
class Bird:  
    def quack(self):  
        print "bird imitate duck."  
class Doge:  
    def quack(self):  
        print "doge imitate duck."  
def in_the_forest(duck):  
    duck.quack()  
duck = Duck()  
bird = Bird()  
doge = Doge()  
for x in [duck, bird, doge]:  
    in_the_forest(x)  
应用场景
- 
多函数需使用共同的值,如:数据库的增、删、改、查操作都需要连接数据库字符串、主机名、用户名和密码
 - 
需要创建多个事物,每个事物属性个数相同,但是值的需求