面向对象 初级篇
python支持 函数 与 面向对象
什么时候实用面向对象?
面向对象与函数对比
类和对象 创建类 class 类名 def 方法名(self,xxxx) 类里面的方法,只能对象去调用 对象 = 类名() 通过对象执行方法 对象.方法名(xxxx) 设计,增删改查功能 函数式: def fetch(self,host,port name passwd,sql) pass def create(self,host,port name passwd,sql) pass def remobe(selfhost,port name passwd,sql,id) pass def modify(self,host,port name passwd,sql) pass 面向对象 class sql(): def fetch(host,port name passwd,sql) pass def create(host,port name passwd,sql) pass def remobe(host,port name passwd,sql,id) pass def modify(host,port name passwd,sql) pass
一次封装多次调用。
面向对象使用场景:
一堆的函数有共同的参数:
当某些函数具有相同参数时
self到底是什么鬼?
self 类自动传值的是形参
那个对象执行方法,self就是谁
obj1.remove(selecrt) self = obj1
obj2.remove(selet..) self = obj2
__init__什么鬼
构造方法
这个特殊的方法再类()时自动会执行这个方法
obj1 = sql(c1,c2,c3)
此时构造了一个obj1对象
面向对象特性:
三大特点: 封装 继承 多态
python可以多继承
父类和子类有同样的方法,优先使用子类的方法
![](https://images2015.cnblogs.com/blog/952201/201606/952201-20160625021700188-2113675900.png)
class f1: def __init__(self): self.name = 123 def show(self): print("show") class f2(f1): # def __init__(self,name): # self.name = name def bar(self): print(self.name)
单继承:
如果涉及到继承,就是把父类的方法拿到自己的类里面
![](https://images2015.cnblogs.com/blog/952201/201606/952201-20160625021743781-14034575.png)
按照优先级关系 左边的优先级高
如果 多继承多级中都有需要的方法?
没有共同的父类 先网上找,再找平级的。
![](https://images2015.cnblogs.com/blog/952201/201606/952201-20160625021819469-1990999753.png)
有共同的父类
![](https://images2015.cnblogs.com/blog/952201/201606/952201-20160625021852719-948617692.png)
sockserver模块中的继承关系
![](https://images2015.cnblogs.com/blog/952201/201606/952201-20160625021928797-735349508.png)