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中面向对象的简单应用,你学废了吗~

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
面向对象编程是一种重要的编程思想,在Python也可以很好地应用。下面是一些Python面向对象编程应用: 1. 定义类:使用class关键字定义一个类,类可以包含属性和方法。 2. 创建实例:使用类名加括号的方式创建一个实例,这个实例就是类的一个对象。 3. 继承:使用父类的属性和方法,创建一个子类。 4. 多态:不同对象可以对同一个方法做出不同的响应。 5. 封装:隐藏对象的属性和方法,只暴露必要的接口。 6. 类型检查:使用isinstance函数检查对象的类型。 下面是一个简单的例子: ``` class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is", self.name) class Student(Person): def __init__(self, name, age, grade): super().__init__(name, age) self.grade = grade def say_hello(self): print("Hello, my name is", self.name, "and I am in grade", self.grade) person = Person("Alice", 25) person.say_hello() student = Student("Bob", 15, 9) student.say_hello() print(isinstance(person, Person)) print(isinstance(student, Person)) print(isinstance(student, Student)) ``` 这个例子定义了一个Person类和一个Student类,Student类继承自Person类。Person类有一个名字和年龄属性,以及一个say_hello方法;Student类在此基础上增加了一个grade属性,并且重写了say_hello方法。最后使用isinstance函数检查对象的类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值