目录

前导

分析 “烤地瓜” 属性和方法

定义类:并且定义_init_方法

添加 "烤地瓜" 方法

第一次合并测试

测试cook方法是否好用

定义 addCondiments()方法和 __str__()方法

第二次测试

隐藏数据

直接通过对象名修改

通过方法间接修改

小结

前导

为了更好的理解面向对象编程,我们以下面的例子来说明。

分析 “烤地瓜” 属性和方法

示例属性如下:

  • cookedLevel : 这是数字;0~3表示还是生的,超过3表示半生不熟,超过5表示已经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始时是生的
  • cookedString : 这是字符串;描述地瓜的生熟程度
  • condiments : 这是地瓜的配料列表,比如番茄酱、芥末酱等

示例方法如下:

  • cook() : 把地瓜烤一段时间
  • addCondiments() : 给地瓜添加配料
  • __init__() : 设置默认的属性
  • __str__() : 让print的结果看起来更好一些

定义类:并且定义_init_方法

#定义`地瓜`类
class SweetPotato:'这是烤地瓜的类'#定义初始化方法def __init__(self):self.cookedLevel = 0self.cookedString = "生的"self.condiments = []

添加 "烤地瓜" 方法

#烤地瓜方法def cook(self, time):self.cookedLevel += timeif self.cookedLevel > 8:self.cookedString = "烤成灰了"elif self.cookedLevel > 5:self.cookedString = "烤好了"elif self.cookedLevel > 3:self.cookedString = "半生不熟"else:self.cookedString = "生的"

第一次合并测试

class SweetPotato:'这是烤地瓜的类'#定义初始化方法def __init__(self):self.cookedLevel = 0self.cookedString = "生的"self.condiments = []#烤地瓜方法def cook(self, time):self.cookedLevel += timeif self.cookedLevel > 8:self.cookedString = "烤成灰了"elif self.cookedLevel > 5:self.cookedString = "烤好了"elif self.cookedLevel > 3:self.cookedString = "半生不熟"else:self.cookedString = "生的"
# 用来进行测试
mySweetPotato = SweetPotato()
print(mySweetPotato.cookedLevel)
print(mySweetPotato.cookedString)
print(mySweetPotato.condiments)##运行
0
生的
[]

测试cook方法是否好用

在上面的代码最后下面添加:

print("------接下来要进行烤地瓜了-----")
mySweetPotato.cook(4) #烤4分钟
print(mySweetPotato.cookedLevel)
print(mySweetPotato.cookedString)

定义 addCondiments()方法和 __str__()方法

 def __str__(self):msg = self.cookedString + " 地瓜"if len(self.condiments) > 0:msg = msg + "("for temp in self.condiments:msg = msg + temp + ", "msg = msg.strip(", ")msg = msg + ")"return msgdef addCondiments(self, condiments):self.condiments.append(condiments)

第二次测试

下面是完整的代码:

class SweetPotato:"这是烤地瓜的类"#定义初始化方法def __init__(self):self.cookedLevel = 0self.cookedString = "生的"self.condiments = []#定制print时的显示内容def __str__(self):msg = self.cookedString + " 地瓜"if len(self.condiments) > 0:msg = msg + "("for temp in self.condiments:msg = msg + temp + ", "msg = msg.strip(", ")msg = msg + ")"return msg#烤地瓜方法def cook(self, time):self.cookedLevel += timeif self.cookedLevel > 8:self.cookedString = "烤成灰了"elif self.cookedLevel > 5:self.cookedString = "烤好了"    elif self.cookedLevel > 3:self.cookedString = "半生不熟"else:self.cookedString = "生的"#添加配料def addCondiments(self, condiments):self.condiments.append(condiments)# 用来进行测试
mySweetPotato = SweetPotato()
print("------有了一个地瓜,还没有烤-----")
print(mySweetPotato.cookedLevel)
print(mySweetPotato.cookedString)
print(mySweetPotato.condiments)
print("------接下来要进行烤地瓜了-----")
print("------地瓜经烤了4分钟-----")
mySweetPotato.cook(4) #烤4分钟
print(mySweetPotato)
print("------地瓜又经烤了3分钟-----")
mySweetPotato.cook(3) #又烤了3分钟
print(mySweetPotato)
print("------接下来要添加配料-番茄酱------")
mySweetPotato.addCondiments("番茄酱")
print(mySweetPotato)
print("------地瓜又经烤了5分钟-----")
mySweetPotato.cook(5) #又烤了5分钟
print(mySweetPotato)
print("------接下来要添加配料-芥末酱------")
mySweetPotato.addCondiments("芥末酱")
print(mySweetPotato)#######################################运行结果
------有了一个地瓜,还没有烤-----
0
生的
[]
------接下来要进行烤地瓜了-----
------地瓜经烤了4分钟-----
半生不熟 地瓜
------地瓜又经烤了3分钟-----
烤好了 地瓜
------接下来要添加配料-番茄酱------
烤好了 地瓜(番茄酱)
------地瓜又经烤了5分钟-----
烤成灰了 地瓜(番茄酱)
------接下来要添加配料-芥末酱------
烤成灰了 地瓜(番茄酱, 芥末酱)进程已结束,退出代码0

隐藏数据

查看过着修改对象的属性(数据),有2种方法:

  • 直接通过对象名修改
  • 通过方法间接修改

直接通过对象名修改

SweetPotato.cookedLevel = 5

通过方法间接修改

 SweetPotato.cook(5)

小结

明明可以使用第1种方法直接修改,为什么还要定义方法来间接修改?

至少有2个原因:

  • 如果直接修改属性,烤地瓜至少需要修改2部分,即修改cookedLevel和cookedString。而使用方法来修改时,只需要调用一次即可完成
  • 如果直接访问属性,可能会出现一些数据设置错误的情况产生例如cookedLevel = -3。这会使地瓜比以前还生,当然了这也没有任何意义,通过使用方法来进行修改,就可以在方法中进行数据合法性的检查

应用测试一(烤地瓜)——> 隐藏数据相关推荐

  1. 使用图像播放Java中的一种技巧-搜索图像,将图像转换为文本,隐藏数据

    介绍 在本文中,我将为您提供一种处理图像文件的方法. 本文将使您深入了解Java中的一些技巧,以便您可以隐藏图像内的敏感信息,将完整图像隐藏为文本,在目录内搜索特定图像,并最小化图像的大小. 但是,这 ...

  2. [20170412]bbed隐藏数据记录.txt

    [20170412]bbed隐藏数据记录.txt --上午做了bbed恢复修改记录(不等长)的情况,http://blog.itpub.net/267265/viewspace-2137082/ -- ...

  3. excel隐私警告_Excel隐藏数据警告

    excel隐私警告 Excel隐藏数据警告 (Excel Hidden Data Warning) Have you seen the articles that blame Excel for al ...

  4. tensflower官方测试案例_大数据性能测试介绍

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 大数据真好玩点击右侧关注,大数据真好玩! ...

  5. 隐藏数据的好方法----Alternative Data Stream(可选数据流)

    前言 "Alternative Data Stream"用中文来说就是"可选数据流" 它可以干啥呢? 它可以隐藏数据. 演示 创建一个aa.txt和一个bb.t ...

  6. Python编程系列教程第13讲——隐藏数据和封装

    视频地址:http://www.56.com/u88/v_OTM5NjU0MjE.html#fromoutpvid=OTM5NjU0MjE 普及网络安全知识,推动信息技术发展. 为祖国的网络安全撑起一 ...

  7. 数据卡片_VISA消息:关于VCPS 2.1卡片产品的性能和交叉测试的卡片个性化数据的更新...

    我们都知道从2020年6月1日起,所有用于性能和交叉测试的卡片样品都必须采用新的个性化数据用于卡片的个性化. 需要注意的是,Visa已经发布了用于产品性能和交叉测试的卡片个性化数据2.0版本,支持VC ...

  8. 微信小程序 - 二维码数据解析,如何扫码进入开发版测试二维码数据

    1.生成二维码 在小程序开发中,经常需要用到通过分享小程序二维码,进行扫码进入小程序. 官方文档 生成小程序二维码接口,这个生成接口可以放置服务器使用. page:是扫码之后需要打开的小程序页面 sc ...

  9. 测试通达信终端数据接口

    通达信终端数据接口,socket又叫套接字,可以理解为是一个应用程序的地址,是实现网络通信的关键.我们可以通过IP找到一台主机,可以通过主机的端口找到该主机上的某个应用程序. 这样,就可以通过通达信终 ...

  10. Excel 2010 VBA 入门 039 按条件隐藏数据行

    目录 示例: 实现代码1 行和列的隐藏 实例代码2 单元格对象的AutoFilter(自动筛选)方法 实现代码3 单元格对象的AdvancedFilter(高级筛选)方法 ​​​​​​​ 示例: 在E ...

最新文章

  1. 斯坦福大学李飞飞团队图像分类课程笔记
  2. 我们如何从VC++开始“编程”?
  3. 易语言webservice接口_易语言语音通知webservice接口
  4. java xsl生成word文件_导出生成xsl文件
  5. Android的移动存储解决方案“.NET研究”之SharedPreferences
  6. 解读webpack的bundle.js
  7. 真心推荐8个高质量Java学习网站,一起从入门到精通java语言,大厂java面试真题分享,建议码住!
  8. python毕业设计作品基于django框架外卖点餐系统毕设成品(6)开题答辩PPT
  9. 临时解决Mac OS系统下kernel_task占用大量CPU资源导致系统卡顿一例(不用删plist文件)
  10. linux可以用tab键,linux下tab键在命令行情况下的强大
  11. java总结一:JSON转对象
  12. outlook邮件路径更改_如何更改Outlook的新邮件警报声音
  13. 树莓派RaspBerryPi上使用3g模块
  14. php如何获取视频文件分辩率,视频分辨率怎么看 查看视频分辨率、帧率、尺寸、以及编码器等详细参数...
  15. 百练 4118 开餐馆
  16. 《上瘾》学习笔记(第一、二章)
  17. 装出一个好的WIN2000最经典的步骤
  18. 从今开始,两耳不闻窗外事,一心搞dp
  19. VS2008的DDK环境配置DDK下载
  20. 物联网之末端数据通信

热门文章

  1. <!DOCTYPE html>是什么意思?
  2. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day29】
  3. 手机WIFI传文件到局域网服务器,iOS 设备实现wifi局域网传输文件到iphone
  4. 如何通过提问识人(行为面试法)
  5. 桌面版vscode用免费的微软4核8G服务器做远程开发(编译运行都在云上,还能自由创建docker服务)
  6. PowerShell报错:无法加载文件C:\Users\server\Documents\windowsPowerShell\profile.ps1...
  7. 微软MSBI零基础从数据仓库到商业智能实战(SSIS SSAS SSRS)
  8. rⅰd的意思_自动挡车型上的P、R、N、D、S、L是什么意思?你懂吗?
  9. 射影几何----齐次坐标下的三点共线和非齐次坐标下的三点共线是等价的
  10. 16张SIM卡,8路5g多卡聚合路由器5g多卡汇聚路由器,多网融合,弱网通信