⾯向对象基础
理解⾯向对象
类和对象
添加和获取对象属性
魔法⽅法
理解面向对象
为了方便了解,我们拿面向过程做一个对比
例如:肚子饿了,想吃饭
面向过程:去超市—买菜—卖肉—买米—回家—洗菜—切肉—炒菜—煮米饭—盛饭—开吃
面向对象:点外卖
总结:⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使⽤的,不⽤去管他内部的情况。⽽编程就是设置事物能够做什么事。
类和对象
思考:打电话需要用手机,这个手机就是一个对象,这个对象哪来的呢?
答:它是制造出来的
思考:怎么制造的?
答:先构思图纸,再生产
在⾯向对象编程过程中,有两个重要组成部分:类 和 对象。
- 类和对象的关系:⽤类去创建⼀个对象。
理解类和对象
类
类是对⼀系列具有相同特征和⾏为的事物的统称,是⼀个抽象的概念,不是真实存在的事物
特征即是属性
⾏为即是⽅法
类⽐如是制造手机时要⽤到的图纸,也就是说类是⽤来创建对象的
对象
对象是类创建出来的真实存在的事物,例如:手机。
注意:开发中,先有类,再有对象。
⾯向对象实现⽅法
语法
class 类名():
代码
pass
注意:类名要满⾜标识符命名规则,同时遵循驼峰命名习惯
快速体验
class My_Project():
print("我是第一个类")
创建对象
语法
# 变量名 = 类名()
快速体验
class My_Phone():
def call_tel(self):
print("正在打电话")
def play_game(self):
print("正在打游戏")
# 创建对象
apple = My_Phone()
print(apple)
# 调用对象的实例方法
apple.play_game()
创建对象的过程也叫实例化对象
self
self 代表类的实例
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
添加和获取对象属性
属性即是特征,⽐如:手机的颜色,大小,重量… > 对象属性既可以在类外⾯添加和获取,也能在类⾥⾯添加和获取。
类外⾯添加对象属性
语法
对象名.属性名 = 值
快速体验
# -*- coding:utf-8 -*-
class My_Phone():
def main(self):
pass
apple = My_Phone()
apple.width = 10
apple.heigth = 15
print(apple.width)
print(apple.heigth)
类里面获取对象属性
语法
self.属性名
快速体验
class My_Phone():
def main(self):
print(self.width)
print(self.heigth)
apple = My_Phone()
apple.width = 10
apple.heigth = 15
apple.main()
魔术方法
在 Python 中,__ xx__() 的函数叫做魔法⽅法,指的是具有特殊功能的函数。
init()
手机的尺寸大小生来就有,那么能不能在生产之前就赋予属性呢?
init() :初始化对象
class My_Phone():
def __init__(self):
self.width = 10
self.heigth = 15
def main(self):
print(self.width)
print(self.heigth)
apple = My_Phone()
init() ⽅法,在创建⼀个对象时默认被调⽤,不需要⼿动调⽤
init(self) 中的 self 参数,不需要开发者传递,python 解释器会⾃动把当前的对象引⽤传递过去。
- 带参数的 init
⼀个类可以创建多个对象,如何对不同的对象设置不同的初始化属性呢?
传参即可
class My_Phone():
def __init__(self,width,heigth):
self.width = width
self.heigth = heigth
def apple_phont(self):
print("苹果手机的宽为:",self.width)
print("苹果手机的高为:",self.heigth)
def huawei_phont(self):
print("华为手机的宽为:",self.width)
print("华为手机的高为:",self.heigth)
apple = My_Phone(10,20)
apple.apple_phont()
str()
当使⽤ print 输出对象的时候,默认打印对象的内存地址。如果类定义了 str ⽅法,那么就会打印从在这个⽅法中 return 的数据。
解释类的属性或作用
# -*- coding:utf-8 -*-
class Demo():
def __init__(self, width, heigth):
self.width = width
self.heigth = heigth
def __str__(self):
return f"你这个手机的宽是{
self.width},高度是{
self.heigth}"
a = Demo(10,20)
print(a)
类属性与方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问
class Demo():
__num = 0 # 私有属性
result = 0 # 公开属性
def count(self):
self.__num += 1
self.result += 1
print(self.__num)
run = Demo()
run.count()
run.count()
print(run.result)
print(run.__num) # 报错,实例不能访问私有变量
综合应用-烤地瓜
需求涉及⼀个事物: 地⽠,故案例涉及⼀个类:地⽠类
- 地⽠的属性
— 被烤的时间
— 地⽠的状态
— 添加的调料
- 地⽠的⽅法
被烤
— ⽤户根据意愿设定每次烤地⽠的时间
— 判断地⽠被烤的总时间是在哪个区间,修改地⽠状态
添加调料
— ⽤户根据意愿设定添加的调料
— 将⽤户添加的调料存储
- 显示对象信息
需求
1、被烤的时间和对应的地⽠状态:
0 - 5 分钟 : ⽣的
5 - 10 分钟 : 半⽣不熟
10-12 分钟 : 烤熟了
超过 12 分钟: 烤糊了
2、添加调料:
代码实现
# -*- coding:utf-8 -*-
class Test_Potato():
def __init__(self):
# 考的时间
self.cook_time = 0
# 考的状态
self.cook_sratic = "生的"
# 放的调料
self.cook_seasoning = []
def cook(self, time):
self.cook_time += time
if 0 <= self.cook_time < 5:
self.cook_sratic = "生的"
if 5 <= self.cook_time < 10:
self.cook_sratic = "半生半熟"
if 10 <= self.cook_time <= 12:
self.cook_sratic = "熟了"
if self.cook_time > 12:
self.cook_sratic = "烤糊了"
def add_seasoning(self,*seasoning):
self.cook_seasoning.append(seasoning)
def __str__(self):
return f"当前地瓜考了--{
self.cook_time}--分钟,他的状态是--{
self.cook_sratic}--,添加的调料是--{
self.cook_seasoning}"
if __name__ == '__main__':
main = Test_Potato()
main.cook(11)
main.add_seasoning("辣椒","花生","孜然")
print(main)
在这里给大家分享一些免费的课程供大家学习,下面是课程里面的截图,点击蓝色字体也可以进行跳转哦~点击这里
1.Python所有方向的学习路线
2.学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、学习资料
四、实战资料
实践是检验真理的唯一标准。这里的压缩包可以让你再闲暇之余帮你提升你的个人能力。
五、视频课程
好啦今天的分享就到这里结束了,快乐的时光总是短暂呢,想学习更多课程的小伙伴不要着急,有更多惊喜哦~