Python中面向对象的简单应用

一、什么是面向对象

C++、Java、Python等这些高级语言即有面向过程也有面向对象,那么什么是面向对象呢?
简单解释以下就是一种抽象化的编程思想,很多编程语言中都有的一种思想。

例如:洗衣服
思考:几种途径可以完成洗衣服?
答: 手洗 和 机洗。 手洗:找盆 - 放水 - 加洗衣粉 - 浸泡 - 搓洗 - 拧干水 -倒水 - 漂洗N次 - 拧干 - 晾晒。
机洗:打开洗衣机 - 放衣服 - 加洗衣粉 - 按下开始按钮 - 晾晒。
思考:对比两种洗衣服途径,有什么区别?
答:机洗更简单
思考:机洗,只需要找到一台洗衣机,加入简单操作就可以完成洗衣服的工作,而不需要关心洗衣机内部发生了什么事情。

总结:
面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。而编程就是设置事物能够做什么事。

二、类和对象

知道了对象能简化工作,简化编程;那么什么是类呢?

类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物

  • 特征特点即是属性
  • 行为功能即是方法

类可以比作制造洗衣机时要用到的图纸,也就是说类是用来创建对象的;对象是类创建出来的真实存在的事物,用类去创建(实例化)一个对象;例如:使用设计图纸来实例化一个洗衣机。

注意:开发中,先有类,再有对象。


以上只是简单说明以下类与对象的关系,下面直接进入真实的项目中来应用

三、综合应用

3.1 烤羊肉

3.1.1 需求分析

需求主线:

  1. 被烤的时间和对应的羊肉状态:

    0-3分钟:生的

    3-5分钟:半生不熟

    5-8分钟:熟的

    超过8分钟:烤糊了

  2. 添加的调料:

    用户可以按自己的意愿添加调料

3.1.2 类的定义

根据需求分析,可以基本判断出类的属性如下

  • 被烤的时间
  • 被烤的状态
  • 添加的调料

类的方法有如下

  • 被烤
    • 用户根据意愿设定每次烤羊肉的时间
    • 判断羊肉被烤的总时间是在哪个区间,修改羊肉状态
  • 添加调料
    • 用户根据意愿设定添加的调料
    • 将用户添加的调料存储

3.1.3 实例化对象,调用相关类的方法

代码展示

# 类的定义
class beat():
    #初始化魔法函数,用于创建对象时自动调用
    def __init__(self):
        # 类的属性
        self.time = 0
        self.state = '生的'
        self.condiment = []

    #用于判断羊肉烤的状态,存在参数,用于用户根据状态来判断需不需要继续烤
    def cook(self,time):
        #每次烤的时间都被累加到一起
        self.time += time
        if 0<self.time<=3:
            self.state = "生的"
        elif 3<self.time<=5:
            self.state = "半生不熟的"
        elif 5 < self.time <= 8:
            self.state = "熟的"
        elif 8 < self.time :
            self.state = "烤糊了"

    #添加调味品的函数,每次添加的调味品都被存储在一个叫做condiment的列表中
    def add_condiment(self,condiment):
        self.condiment.append(condiment)

    #提示信息,用于打印对象时输出
    def __str__(self):
        return f"羊肉烤了{self.time}min,此时的状态为{self.state},添加的调料有{self.condiment}"

#创建对象
mutton = beat()
mutton.cook(5)
mutton.add_condiment('辣椒面')
#mutton.add_condiment('胡椒')
#mutton.cook(2)
print(mutton)

执行结果:
在这里插入图片描述若增加调料品与烤的时间,则输出为

mutton.add_condiment('胡椒')
mutton.cook(2)

在这里插入图片描述

3.2 搬家具

3.2.1 需求分析

将小于房子剩余面积的家具摆放到房子中

3.2.2 类的定义

  • 房子类

    • 实例属性
      • 房子地理位置
      • 房子占地面积
      • 房子剩余面积
      • 房子内家具列表
    • 实例方法
      • 容纳家具
    • 显示房屋信息
  • 家具类

    • 家具名称
    • 家具占地面积

3.2.3 实例化对象,调用相关类的方法

代码展示:

#家具类
class furn():
    def __init__(self,name,area):
        #家具名字
        self.name = name
        #家具的占地面积
        self.area = area

#房子类
class home():
    #初始化函数,用于初始化对象内的一些信息
    def __init__(self,address,area):
        #地理位置
        self.address = address
        #房屋面积
        self.area = area
        # 注意此时还没有家具搬进来,所以剩余的房屋面积就是房屋的初始面积
        self.free_area = area
        #家具列表
        self.furn = []

    #用于判断是否还能容纳家具,
    #注意 这里需要与家具类中的“占地面积”参数进行比较,所以参数写成家具类的对象
    def add_furn(self,item):
        if self.free_area > item.area:
            self.furn.append(item.name)
            #家具搬入后,房屋剩余面积 = 之前剩余面积 - 该家具面积
            self.free_area -= item.area
        else:
            print('家具太大,剩余面积不足,无法容纳')

    #用于显示房屋的信息
    def __str__(self):
        return f"您的房子在{self.address},总面积为{self.area},剩余面积为{self.free_area},有{self.furn}这些家具"

#实例化对象
bed = furn('bed',5)
sofa = furn("sofa",15)
soccer = furn('goal',2000)

hu = home('成都',220)
hu.add_furn(bed)
hu.add_furn(sofa)
#hu.add_furn(soccer)
print(hu)

执行结果:
在这里插入图片描述如果将足球场放进房子里肯定是不可能实现的,如下演示结果

hu.add_furn(soccer)

在这里插入图片描述
以上就是Python中面向对象的简单应用,你学废了吗~

猜你喜欢

转载自blog.csdn.net/qq_41959899/article/details/111493132