python中类与对象的应用_面向对象在Python中的简单应用

一、什么是面向对象

C++、Java、Python等这些高级语言即有面向过程也有面向对象,那么什么是面向对象呢?

简单解释以下就是

一种抽象化的编程思想,很多编程语言中都有的一种思想。

例如:洗衣服

思考:几种途径可以完成洗衣服?

答: 手洗 和 机洗。 手洗:找盆 - 放水 - 加洗衣粉 - 浸泡 - 搓洗 - 拧干水 -倒水 - 漂洗N次 - 拧干 - 晾晒。

机洗:打开洗衣机 - 放衣服 - 加洗衣粉 - 按下开始按钮 - 晾晒。

思考:对比两种洗衣服途径,有什么区别?

答:机洗更简单

思考:机洗,只需要找到一台洗衣机,加入简单操作就可以完成洗衣服的工作,而不需要关心洗衣机内部发生了什么事情。

总结:

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

二、类和对象

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

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

特征特点即是属性

行为功能即是方法

类可以比作制造洗衣机时要用到的图纸,也就是说

类是用来创建对象的

;对象是类创建出来的真实存在的事物,用类去创建(实例化)一个对象;例如:使用设计图纸来实例化一个洗衣机。

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

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

三、综合应用

3.1 烤羊肉

3.1.1 需求分析

需求主线:

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

0-3分钟:生的

3-5分钟:半生不熟

5-8分钟:熟的

超过8分钟:烤糊了

添加的调料:

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

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.state = "生的"

elif 3

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值