python面向对象,烤地瓜应用

  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强…”

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

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

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

创建类和对象

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

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

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

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

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

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

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

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

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

面向对象三大特性

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



烤地瓜的属性和方法:

cookedLevel:

0-3 生的

大于3 半生不熟

大于5 烤好了

大于8 已经烤成木炭

默认开始时生成的

cookedString:

这是字符串,描述地瓜生熟程度

condiments:

地瓜的配料,用列表来存


方法:

cook()  时间

addCondiments()加配料

__init__ 设置默认

__str__ print输出更好看


图示大概完成内容

python面向对象,烤地瓜应用_第1张图片


代码如下:

#定义一个地瓜类,注意是大驼峰命名
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)




你可能感兴趣的:(面向对象,编程,函数,python,应用)