python面向对象,烤地瓜应用

来源:互联网 发布:网络suv有啥好处和坏处 编辑:程序博客网 时间:2024/04/27 15:37
  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强…”

面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处。

随着时间的推移,开始使用了函数式编程,增强代码的重用性和可读性,就变成了这样

今天我们来学习一种新的编程方式:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)

创建类和对象

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

对象则是根据模板创建的实例,通过实例对象可以执行类中的函数271420286872390

  • class是关键字,表示类
  • 创建对象,类名称后加括号即可

ps:类中的函数第一个参数必须是self(详细见:类的三大特性之封装)
   类中定义的函数叫做 “方法”

诶,你在这里是不是有疑问了?使用函数式编程和面向对象编程方式来执行一个“方法”时函数要比面向对象简便

  • 面向对象:【创建对象】【通过对象执行方法】
  • 函数编程:【执行函数】

观察上述对比答案则是肯定的,然后并非绝对,场景的不同适合其的编程方式也不同。

总结:函数式的应用场景 –> 各个函数之间是独立且无共用的数据

面向对象三大特性

面向对象的三大特性是指:封装、继承和多态。



烤地瓜的属性和方法:

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)




原创粉丝点击