python面向对象编程
概述
面向对象编程即OOP编程,区别于面向过程编程,面向对象编程比较适合开发大项目,会以更接近人类的思维角度去写程序。
类和对象
类:具有某种特征的事物的集合(群体)
对象:群体(类)里面的个体
类是抽象的,对象是具体的---类的实例化
创造一个类:
class 类名:
类里面的内容
...
class cl1:
pass
...
实例化一个类
a=cl1()
...
a即类(cl1)内对象
两种调用方法:
构造函数
类在实例化时自动首先触发的函数:init(self,参数)--双下划綫,在类中的方法中必须加上self参数。
class cl2
def__init__(self):
print("hellow,welcome")
构造函数作用是初始化
给类加上参数---给构造方法加上参数
class cl3
def __init__(self,name,job):
print("my name is "+name+"my job is"+job)
输入c=cl3("ag","aqw")--输出my name is ag my job is aqw
属性与方法
属性: 静态的特征。如头发、手臂等
方法: 动态的特征。如唱歌、写字等
类中属性的定义和调用:self.属性名
class cl4:
def __init__(self,name,job):
self.myname=name
self.myjob=job----定义类的属性
输入c=cl4("ag","aqw")--输入myname--输出ag--输入myjob--输出aqw--直接调用类的属性
方法:类里面的函数def 方法名(self,参数)
class cl5:
def myfound(self):
print("aga")
实例化时不需要添加参数,调用的时候需要添加
class cl6:
def myfound1(self,name):
print("hellow"+" "+name)
调用类里面的方法:
c=cl6()------实例化
c.myfound("liuyong")---调用函数myfound()并加参数
输出hellow liuyong
class cl7:
def __init__(self,name):
self.myname=name
def myfound1(self):
print("hellow"+" "+myname)
调用类里面的方法:
c=cl7("liuyong")------实例化即添加参数
c.myfound()---调用函数myfound()并加参数
继承与重载
继承: 把某一个或多个类(基类)的特征拿过来(单继承、多继承)
重载: 把子类(派生类)里面对继承过来的特征重新定义
父类: 基类
子类: 派生类
案例讲解
某一个家庭有父亲、母亲、儿子、女儿,父亲可以说话,母亲可以写字,大儿子继承了父亲写字的能力,女儿同时继承了父母亲、并且有能力听东西,小儿子继承了父亲,但是优化(减弱)了父亲说话的能力。
父亲类(基类):
class father():
def speak(self):
print("I can speak")
单继承类:class 子类(父类)
class son1(father):
pass
执行
s=son1()
s.speak()
---I can speak
母亲类:
class mother()
def write(self):
print("I can write")
多继承:
class daughter(father,mother):
def listen(self):
print("I can listen")
执行
d=daughter()
d.speak()
---I can speak
d.write()
---I can write
d.listen()
---I can listen----多继承不影响新功能
重写(重载):
class son2(father):
def speak(self):
print("I can speak 2")
执行
s=son2()
s.speak()
---I can speak2---重名覆盖
作业:
将多个Excel表格里面的内容合并到一个文件中。
要点:
- 使用第三方模块操作,比如xlrd、xlwt;
- 注意使用循环;
- 一个Excel中有多个sheet,也需要合并。
安装