手机版
网站地图
美文美图
最新动态
你好,欢迎访问
好美文阅读网
个性皮肤
搜索
网站首页
美文
文章
散文
日记
诗歌
小说
故事
句子
作文
签名
祝福语
情书
范文
读后感
文学百科
美文摘抄
节日文章
名家散文
网名大全
座右铭
口号大全
面试技巧
说说大全
阅读答案
诗词默写
流言蜚语
节日祝福
好句子
经典台词
谚语大全
亲情故事
友情故事
表白情书
工作报告
活动总结
心得体会
专题汇总
美文网首页
day16
day16
作者:
曹操贼6
| 来源:发表于
2017-11-14 21:42 被阅读0次
定义__str__()方法
class Car:
def __init__(self, newWheelNum, newColor):
self.wheelNum = newWheelNum
self.color = newColor
def __str__(self):
msg ="嘿。。。我的颜色是"+ self.color +"我有"+ int(self.wheelNum) +"个轮胎..."
return msg
def move(self):
print('车在跑,目标:夏威夷')
BMW = Car(4,"白色")
print(BMW)
总结
·在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法
当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
self
#定义一个类
class Animal:
#方法
def __init__(self, name):
self.name = name
def printName(self):
print('名字为:%s'%self.name)
#定义一个函数
def myPrint(animal):
animal.printName()
dog1 = Animal('西西')
myPrint(dog1)
dog2 = Animal('北北')
myPrint(dog2)
运行结果:
名字为:西西
名字为:北北
总结
所谓的self,可以理解为自己
可以把self当做C++中类里面的this指针一样理解,就是对象自身的意思
某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可
分析“烤地瓜”的属性和方法
示例属性如下:
cookedLevel :这是数字;0~3表示还是生的,超过3表示半生不熟,超过5表示已经烤好了,超过8表示已经烤成木炭了!我们的地瓜开始时时生的
cookedString :这是字符串;描述地瓜的生熟程度
condiments :这是地瓜的配料列表,比如番茄酱、芥末酱等
示例方法如下:
cook():把地瓜烤一段时间
addCondiments():给地瓜添加配料
__init__():设置默认的属性
__str__():让print的结果看起来更好一些
定义类,并且定义__init__()方法
#定义`地瓜`类
class SweetPotato:
'这是烤地瓜的类'
#定义初始化方法
def __init__(self):
self.cookedLevel = 0
self.cookedString ="生的"
self.condiments = []
添加"烤地瓜"方法
#烤地瓜方法
def cook(self, time):
self.cookedLevel += time
if self.cookedLevel >8:
self.cookedString ="烤成灰了"
elif self.cookedLevel >5:
self.cookedString ="烤好了"
elif self.cookedLevel >3:
self.cookedString ="半生不熟"
else:
self.cookedString ="生的"
基本的功能已经有了一部分,赶紧测试一下
把上面2块代码合并为一个程序后,在代码的下面添加以下代码进行测试
mySweetPotato = SweetPotato()
print(mySweetPotato.cookedLevel)
print(mySweetPotato.cookedString)
print(mySweetPotato.condiments)
完整的代码为:
class SweetPotato:
'这是烤地瓜的类'
#定义初始化方法
def __init__(self):
self.cookedLevel =0
self.cookedString ="生的"
self.condiments = []
#烤地瓜方法
def cook(self, time):
self.cookedLevel += time
if 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)
测试cook方法是否好用
在上面的代码最后面添加如下代码:
print("------接下来要进行烤地瓜了-----")
mySweetPotato.cook(4)#烤4分钟
nt(mySweetPotato.cookedLevel)
print(mySweetPotato.cookedString)
定义addCondiments()方法和__str__()方法
def __str__(self):
msg = self.cookedString +"地瓜"
if len(self.condiments) >0:
msg = msg +"("
for emp in self.condiments:
msg = msg + temp +", "
msg = msg.strip(", ")
msg = msg +")"
return msg
defaddCondiments(self, condiments):
self.condiments.append(condiments)
再次测试
完整的代码如下:
class SweetPotato:
"这是烤地瓜的类"
#定义初始化方法
def __init__(self):
self.cookedLevel =0
self.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 += time
if 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)
保护对象的属性(私有属性)
如果有一个对象,当需要对其进行修改属性时,有2种方法
对象名.属性名=数据---->直接修改
对象名.方法名() ---->间接修改
为了更好的保存属性安全,即不能随意修改,一般的处理方式为
将属性定义为私有属性
添加一个可以调用的方法,供调用
相关文章
网友评论
本文标题:
day16
本文链接:
https://www.haomeiwen.com/subject/vyfqvxtx.html
延伸阅读
那年盛夏诗歌
环境监察队工作总结范文
优秀教师学习心得范文
华胥引的读后感300字
《Its red》教学反思范文
农资购销的合同范本
竞选中队委优秀演讲稿
辞金蹈海的成语解释
《世纪宝鼎》公开课教案设计
因为爱你,所以牵挂
今生今世红尘醉——美到
一个90后的内心独白
致已逝去的高中年华
深度阅读
您也可以注册成为美文阅读网的作者,发表您的原创作品、分享您的心情!
情人节
母亲节
重阳节
清明节
端午节
植树节
元宵节
妇女节
愚人节
圣诞节
父亲节
教师节
儿童节
劳动节
青年节
建军节
万圣节
平安夜
光棍节
中秋节
国庆节
感恩节
腊八节
更多话题
栏目导航
摄影
故事
互联网
读书
旅行
热点阅读
57/70 为什么断了日更
硬笔临写田英章千字文
头脑风暴作业
会计学院秋游记
姑娘, 一份婚前协议并不能保你安全
千岛湖遇见(一)
vue学习杂计
为什么中国各行各业高调的人,最后的结果都并不理想?
我是很贪心,又容易满足
至少,还有你
网友评论