Python第十章
Python面向对象编程
前言
面向对象和面向过程的区别
面向过程:(把大象装到冰箱里)
1.开冰箱
2.放大象
3.关冰箱
面向对象:(把大象装到冰箱里)
类
将一系列事物封装到类中,包括功能以及属性
class Person():
def fangdaxiang():
将大象放到冰箱的方法
为什么使用面向对象?
面向对象他更加符合人的思想。
特点:
封装
继承
多态
一、类和对象
类:将一系列事物封装到类中,包括功能以及属性,是虚拟的,不是真实存在
对象:是对类的一种具体化,是真实存在的。
声明类:
python2.0需要在小括号加上Object。
python3.0不需要
class 类名():
属性: #类属性:一般固定值,不在修改的值,我们使用类属性
方法:
1.定义对象以及使用对象中的方法
class Student():
def __init__(self,sname,sex):#初始化方法,初始化
self.sname=sname
self.sex=sex
def __del__(self):
print('当对象的线程结束以后,内存会自动调用del方法,销毁内存中的对象')
def __str__(self):
print('这是输出对象信息')
return '名称:{},性别:{}'.format(self.sname,self.sex)
def chi(self):
print('这是吃的方法。。。。')
在Python中, xx() 的函数叫做魔法方法,指的是具有特殊功能的函数。
注意:
init() 方法,在创建⼀个对象时默认被调用,不需要手动调用
init(self) 中的self参数,不需要开发者传递,python解释器会自动把当前的对象引 用传递过去。
str()
当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了 str 方法,那么就会打印从在这个方法中 return
的数据。
二、调用,创建实体对象
class Student():
def __init__(self,sname,sex)
self.sname=sname
self.sex=sex
def __str__(self):
print('这是输出对象信息')
return '名称:{},性别:{}'.format(self.sname,self.sex)
def StuRun(self):
print('这是运动的方法.')
Stu1=Student('张三',18)
Stu1.StuRun()
print(Stu1.__str__())
三. 使用面向对象做个小系统
1:需求
烤地瓜
需求
需求主线:
1. 被烤的时间和对应的地瓜状态:
0-3分钟:生的
3-5分钟:半生不熟
5-8分钟:熟的
超过8分钟:烤糊了
2. 添加的调料:
用户可以按自己的意愿添加调料
需求涉及⼀个事物: 地瓜,故案例涉及⼀个类:地瓜类。
定义类
地瓜的属性
被烤的时间
地瓜的状态
添加的调料
地瓜的方法
被烤
用户根据意愿设定每次烤地瓜的时间
判断地瓜被烤的总时间是在哪个区间,修改地瓜状态
添加调料
用户根据意愿设定添加的调料
将用户添加的调料存储
显示对象信息
创建对象,调用相关实例方法
2.实现代码展示
class Potato():
def __init__(self):
self.time=0
self.static='生的'
self.listFlavour=[]
def __str__(self):
return f'这是地瓜,考了{self.time}时间,状态是{self.static},使用的调料有{self.listFlavour}'
def kao(self,time):
self.time+=time
if self.time>=0 and self.time<3:
self.static='生的'
elif self.time>=3 and self.time<5:
self.static='半生不熟'
elif self.time>=5 and self.time<=8:
self.static='熟了'
elif self.time>8:
self.static='糊了'
def addFlavour(self,*flavour):
for i in flavour:
if i not in self.listFlavour:
self.listFlavour.append(i)
pt=Potato()
pt.kao(2)
pt.addFlavour('辣椒')
print(pt)
pt.kao(6)
pt.addFlavour('孜然','辣椒','胡椒粉')
print(pt)
四.小结
本章概述了Python中对象的创建于调用,并使用面向对象做了一个小系统,本章知识尤为重要,在之后的Python学习中大概率会一直使用面向对象的语法,本章不明白的小伙伴一定要多练.
有哪里不足或者更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴可以私信博主,博主将一一答复,感谢认可,感谢支持!