面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
while
True:
if
cpu利用率
>
90
%
:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
if
硬盘使用空间
>
90
%
:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
if
内存占用
>
80
%
:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
|
随着时间的推移,开始使用了函数式编程,增强代码的重用性和可读性,就变成了这样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
def
发送邮件
(内容
)
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
while
True:
if
cpu利用率
>
90
%
:
发送邮件
(
'CPU报警'
)
if
硬盘使用空间
>
90
%
:
发送邮件
(
'硬盘报警'
)
if
内存占用
>
80
%
:
发送邮件
(
'内存报警'
)
|
今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
对象则是根据模板创建的实例,通过实例对象可以执行类中的函数
ps:类中的函数第一个参数必须是self(详细见:类的三大特性之封装)
类中定义的函数叫做 “方法”
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 创建类
class
Foo
:
def
Bar
(
self
)
:
print
'Bar'
def
Hello
(
self
,
name
)
:
print
'i am %s'
%
name
# 根据类Foo创建对象obj
obj
=
Foo
(
)
obj
.
Bar
(
)
#执行Bar方法
obj
.
Hello
(
'wupeiqi'
)
#执行Hello方法
|
诶,你在这里是不是有疑问了?使用函数式编程和面向对象编程方式来执行一个“方法”时函数要比面向对象简便
观察上述对比答案则是肯定的,然后并非绝对,场景的不同适合其的编程方式也不同。
总结:函数式的应用场景 –> 各个函数之间是独立且无共用的数据
面向对象的三大特性是指:封装、继承和多态。
烤地瓜的属性和方法:
cookedLevel:
0-3 生的
大于3 半生不熟
大于5 烤好了
大于8 已经烤成木炭
默认开始时生成的
cookedString:
这是字符串,描述地瓜生熟程度
condiments:
地瓜的配料,用列表来存
方法:
cook() 时间
addCondiments()加配料
__init__ 设置默认
__str__ print输出更好看
图示大概完成内容
代码如下:
#定义一个地瓜类,注意是大驼峰命名
class SweetPoato:
#初始化,用来设置默认属性
def __init__(self):
self.cookedLevel = 0
self.cookedString = "生"
self.condiments = []
def __str__(self):
msg = "您的地瓜已经处于 " + self.cookedString + "的状态"
if len(self.condiments)>0:
msg = msg + " ,添加的佐料为:"
for temp in self.condiments:
msg = msg + temp + ", "
#把两端多余的逗号去掉
msg = msg.strip(", ")
return msg
# 用火去烤地瓜
def cook(self,time):
self.cookedLevel += time
if self.cookedLevel>8:
self.cookedString = "烤糊了"
elif self.cookedLevel>5:
self.cookedString = "熟了"
elif self.cookedLevel > 3:
self.cookedString = "半生不熟"
else:
self.cookedString = "生"
def addCondiments(self,temp):
self.condiments.append(temp)
#创建一个地瓜对象
digua = SweetPoato()
print(digua)
print("-----接下来开始 烤-----")
print("---烤两分钟---")
digua.cook(2)
print(digua)
print("---又烤两分钟---")
digua.cook(2)
print(digua)
print("---添加番茄酱---")
digua.addCondiments("番茄酱")
print(digua)
print("---添加芥末酱---")
digua.addCondiments("芥末酱")
print(digua)