一、理解面向对象
面向对象就是将编程当成一个事物,对外界来说,事物是直接使用的,不用管他
内部的情况。而编程就是设置事物能做什么事。
二.类和对象
图纸 - 洗衣机 - 洗衣服
类   -  对象  - 完成我们做的事
用类去创建一个对象。
用类去 实例化一个对象。
理解类和对象
2.1.1 类
类是对一系列相同特征和行为的事物的统称,是一个抽象的概念。不是真是存在的事物
开发中先有类,在有对象
先有图纸,再有对象。
面向对象的实现方法class 类名():代码:大量的属性及方法遵循大驼峰的命名习惯
创建对象的方面
对象名 = 类名()
举例说明:
复现洗衣机这个例子,功能:能洗衣服
1、定义洗衣机类
'''
class 类名()代码
# '''
class Washer():def wash(self):   # self 就是调用该函数的对象print('能洗衣服')
# 2、创建对象
# 对象名 = 类名()
haier = Washer()
# 3、验证成功
#打印haier对象
print(haier)
#使用wash功能 - - 实例方法/对象方法。调用语法.Wash()
haier.wash()# slef 学习了解。例子:类:洗衣机 功能 洗衣服class Washer():def wash(self): #self指的是谁调用了这个函数,就指的是谁print('能洗衣服')print(self)
haier = Washer() #类创建的对象可以使用对象里面的函数功能
print(haier)
haier1 = Washer()
print(haier1)
haier.wash()
haier1.wash()
#由于打印对象和打印self得到内存地址相同,所有self指的是调用该函数的对象
#一个类可以创建多个对象,多个对象调用函数时,调用的self内存数值是不相同的。
三、添加和获取对象的属性
属性的特征,比如:洗衣机的宽度、高度、重量。。
对象属性可以类外面添加和获取,也能在类的里面添加和获取
不同的对象属性也不同的,根据不同的属性,选择不同的对象
3.1 类外面添加对象属性
对象名.属性名 = 值
haier.width = 500 宽度
haier.height = 800 高度
class Washer():def wash(self):print('能洗衣服')
haier = Washer()
#添加属性 对象名.属性名 = 值
haier.weight = 500
haier.height = 800
# 3.2 类外面获取对象属性
# 对象名.属性名  语法
print(f'haier洗衣机的宽度是{haier.weight}')
print(f'haier洗衣机的高度是{haier.height}')
3.3 类里面获取对象属性
语法:self.属性名
class Washer():def wash(self):print('能洗衣服')def print_info(self):print(f'洗衣的宽度是{self.width}') #width 实例属性名print(f'洗衣的高度是{self.height}')#height 实例属性名
haier = Washer()   #实例化
haier.width = 500  #赋值属性
haier.height = 800
haier.print_info()  #对象调用方法
四。魔法方法
__XX__的函数叫做魔法方法,指的具有特殊功能的函数
__init__()
4.1.1 洗衣服的宽度高度是与生俱来的属性,可不可以在生产过程中就赋予这些属性呢
__init__()方法的作用:初始化对象
__init__()方法,在创建对象的默认被调用,不需要手动调用
__init__()中的self参数,不需要开发者传递,python解释器会自动传递'''
1.定义类   init魔法方法:width 和height添加实例方法:访问实例属性
2.创建对象
3.验证成果调用实例方法
'''class Washer(): #class Washer():#定义__init__,添加实例属性def __init__(self):#添加实例属性self.width = 500self.height = 800def print_info(self):print(f'洗衣服的宽度是{self.width}')print(f'洗衣服的宽度是{self.height}')
haier = Washer()
haier.print_info()
4.1.2带参数的__init__写法。传参
1.定义类:带参数的init:宽度和高度:实例方法:调用实例属性
class Washer():def __init__(self,width,height):  #初始化带参数的值self.width = widthself.height = heightdef print_info(self):print(f'洗衣机的宽度是{self.width}')print(f'洗衣机的宽度是{self.height}')
创建对象,创建多个对象且属性值不同:调用实例方法
haier1 = Washer(10,20)
haier1.print_info()
haier2 = Washer(100,200)
haier2.print_info()
4.2 魔法方法__str__()
当使用print输出对象的时候,默认打印对象的内存地址,如果类定义了__str__方法,那么就会打印从在这个方法中return数据class Washer():def __init__(self,width,height):#带参数的宽度和高度self.width = widthself.height = heightdef wash(self):print('能洗衣服')def __str__(self):return '这个洗衣机品牌为海尔'def print_info(self):print(f'洗衣机宽度为{self.width}')print(f'洗衣机高度为{self.height}')
haier = Washer(10,20)
print(haier) #默认打印对象内存地址,如果定义了————str 打印返回值。
haier.print_info()
haier.wash()
4.3 __del__魔法方法
class Washer():  __del__()自动删除对象def __init__(self):self.width = 3000def print_info(self):print(f'洗衣机的宽度为{self.width}')def __del__(self):print('对象已经删除')
haier = Washer()
haier.print_info()五、综合应用
###############################5.1烤地瓜######################
需求:
1、被烤的时间控制对应的地瓜状态0-3分钟;生的3-5分钟:半生不熟5-8分钟:熟的超过8分钟:烤糊了
2、添加的调料用户可以按自己的意愿添加调料
5.1.2 步骤分析
5.1.2.1 定义类
地瓜的属性:  对象被烤的时间被烤的状态添加的调料
地瓜的方法:实例方法被烤:用户根据自己意愿设定每次烤地瓜的时间判断地瓜被烤的总时间是在哪个区间,修改地瓜的状态添加调料:用户根据意愿设定添加的调料将用户添加的调料存储
显示对象信息:
5.1.3 代码实现
############定义地瓜类:初始化属性,被烤和添加调料的方法,显示对象信息的str
class SweetPotato():def __init__(self):'''默认属性'''# 被烤的时间self.cook_time = 0# 烤的状态self.cook_state = '生的'# 调料列表self.condiments = []  #调料列表def cook(self, time):'''烤地瓜的方法,时间规格先计算地瓜整体的烤过的时间用整体烤过的时间在判断地瓜的状态:param time::return:'''self.cook_time += time  # 烤的时间根据放进去时间决定if 0 <= self.cook_time < 3:self.cook_state = '生的'elif 3 <= self.cook_time < 5:self.cook_state = '半生不熟'elif 5 <= self.cook_time < 8:self.cook_state = '熟了'elif 8 <= self.cook_time:self.cook_state = '烤糊了'def add_condiments(self,condiment): #带参数的函数'''添加调料'''self.condiments.append(condiment)  #追加列表。def __str__(self):  #默认打印对象return f'这个地瓜烤了{self.cook_time}分钟,这个地瓜的状态是{self.cook_state},调料有{self.condiments}'#############创建对象并调用对应的实例方法
digua1 = SweetPotato()
print(digua1)
digua1.cook(2)
digua1.add_condiments('白糖')
print(digua1)
digua1.cook(2) #时间累加。这个地瓜烤了4分钟,这个地瓜的状态是半生不熟
digua1.add_condiments('辣椒面')
print(digua1)
5.2 ##########################搬家具##########################
5.2.1 需求
将小于房子剩余面积的家具摆放到房子中
5.2.2 步骤分析
需要涉及两个事物,房子和家具。案例涉及两个类:房子类和家具类
房子类:实例属性:房子的地理位置房子的占地面积房子的剩余面积房子内家具列表实例方法:容纳家具显示房屋信息:__str__
家具类:家具名称家具占地面积
5.2.2 创建对象并调用相关方法:
家具类
class furniture():def __init__(self,name,area):'''定义家具默认属性,名字,占地面积'''self.name = nameself.area = areaclass Home():def __init__(self,address,area):'''定义房子的默认属性,房屋地址,房屋面积'''#地址位置self.address = address#房屋面积self.area = area#剩余面积self.free_area = area#家具列表self.furniture = []def __str__(self):return f'房子的地址为{self.address},房子的面积是{self.area},房子的剩余面积是{self.free_area},房子里面的家具有{self.furniture}'def add_furniture(self,item):'''容纳家具方法。item就是传参'''#如果家具占地面积 <= 房子剩余面积,可以搬入(家具名字)if self.free_area >=item.area :self.furniture.append(item.name)#家具搬入后,房屋的剩余面积 = 之前剩余面积 - 该家具的面积self.free_area -= item.areaelse:print('家具太大,房屋无法容纳')bed = furniture('双人床',6)
sofa = furniture('沙发',10001)
home1  = Home('郑州',1000)
home1.add_furniture(bed)
print(home1)
home1.add_furniture(sofa)

面向对象-基础语法讲解(案例-烤地瓜、搬家具)相关推荐

  1. Go语言基础语法讲解与学习

    Go语言基础语法讲解与学习 1 Go语言基础知识介绍 ​ 介绍Go语言之前,我们先了解一下有哪些开源项目是Go语言开发的,其中就包括 Docker.Go-Ethereum.Thrraform 和 Ku ...

  2. JavaScript 基础语法循环案例练习

    JavaScript 基础语法循环案例练习 文章目录 JavaScript 基础语法循环案例练习 前言 一.早午晚安喵喵喵 二.判断奇偶数 三.班长请客 四.1-100跳过个位为3的数求和 五.第几个 ...

  3. 2018年第44周-scala入门-面向对象基础语法

    scala和java都是可以运行在JVM上, 所以scala和java是可以互相调用, 那么问题来了, 既然已经有java语言存在, 为什么还要发明scala语言. 存在即合理, 所以我就想找下sca ...

  4. Python 面向对象 --- 基础语法

    目标 dir 内置函数 定义简单的类(只包含方法) 方法中 self参数 初始化方法 内置方法和属性 01,dir 内置函数(知道) 在 python 中 对象几乎是无所不在的,变量.数据.函数 都是 ...

  5. Java基础语法的案例练习-编程思维的训练

    文章目录 案例一: 买飞机票 案例二: 找出素数 案例三: 开发验证码 案例四: 评委打分 案例五: 数字加密 案例六: 双色球(扩展案例) 案例一: 买飞机票 需求 : 机票价格按照淡季旺季.头等舱 ...

  6. 一篇超详细的pytorch基础语法讲解及理论推导(一)

    张量 - 线性回归 - 自动求导 - 逻辑回归 来源:投稿 来源:阿克西 编辑:学姐 1 pytorch简介 PyTorch是2017年1月FAIR(Facebook AI Research)发布的一 ...

  7. AppleScript基础语法讲解

    --AppleScript变量有四种数据类型:number,string,list,record --为变量赋值应当使用set to语句:   set 变量名 to 变量值 set x to 10 s ...

  8. 100天精通Python(基础篇)——第13天:面向对象基础语法

  9. 【趣味学Python】Python基础语法讲解

    目录 编码 标识符 python保留字 注释 实例(Python 3.0+) 实例(Python 3.0+) 行与缩进

  10. MVEL快速入门—MVEL基础语法讲解(一)

    概述 MVEL是从英文翻译而来的,MVFLEX表达式语言是Java平台的动态/静态混合类型的运行时可嵌入表达式语言.该项目最初是作为应用程序框架的实用语言开始的,现在已完全独立开发.MVEL通常用于通 ...

最新文章

  1. 传承德艺之馨——上海文联第八次代表大会侧记
  2. win10系统修改Intel VT-x时进入不了BIOS问题
  3. Linux MTD系统剖析【转】
  4. 商汤 AI TECH DAY丨见大咖、拿OFFER、体验AI,一次就够!
  5. 软件素材---linux C语言:拼接字符串函数 strcat的用例(与char数组联合使用挺好)...
  6. 使用Cloud SQL的Google App Engine全文搜索
  7. 【和谐 OS】来了!鸿蒙现场视频解析
  8. 极具设计感的专辑分类设计,给你带来不一样的灵感
  9. Android java传递int类型数组给C
  10. 没有电脑可以学习python_有没有适合初学者学习Python的方法?
  11. 从程序员到项目经理:原来一切问题都是可以解决的
  12. 内蒙古一个不起眼的小城,藏着中国最大火力发电厂
  13. 综合评价方法之熵值法
  14. lisp 获取横断面数据_基于Visual LISP全路线横断面数据自动提取
  15. 从零开始玩转Franka Panda机器人
  16. DirectX加速不可用、已禁用的解决方法
  17. 19南大软院上岸学姐考研经验分享
  18. 搜狗号正式上线广告收益功能!
  19. 为什么连接xshell报错Could not connect to 172.16.16.100 (port 22): Connection failed
  20. frame组件+pack()来布局定位组件,实例讲解

热门文章

  1. 计算机没有进程管理器,win10系统任务管理器中没有进程的处理办法
  2. HDOJ 5296 Annoying problem LCA+数据结构
  3. 程序员必须 知道的英语单词
  4. FSA-Net环境配置
  5. 格林尼治时间与本地时间转换
  6. obs 推流编码在哪设置_在OBS上进行H265推流
  7. MIPI屏上电时序问题
  8. 对接快递100快递管家API之如何实现自动打单
  9. 同心向前,Google Play 十周年啦!
  10. Named Entity Recognition for Chinese Social Media with Jointly Trained Embedding 笔记