看过电影“神奇动物在哪里”的,一定知道,如果魔法师有了魔法棒,肯定会有一招,是把魔法棒变成蛇之类的神兽。
但是我不喜欢蛇,要不就变个龙吧。
class 神兽: def 坐骑(听觉): if 听觉.听见 == "求救": 听觉.方向 = "过来" elif 听觉.听见 == "宝贝": 听觉.方向 = '不过来' 我的龙 = 神兽() 我的龙.听见 = "求救" 我的龙.颜色 = "红色" print("我的龙是",我的龙.颜色,"的") print("如果我的龙听见我",我的龙.听见) 我的龙.坐骑() print("那么龙就会往我这边",我的龙.方向) 我的龙.听见 = "宝贝" print("如果我的龙听到我喊",我的龙.听见) 我的龙.坐骑() print("那么我的龙就会",我的龙.方向)
12345678910111213141516171819202122结果是
我的龙是 红色 的 如果我的龙听见我 求救 那么龙就会往我这边 过来 如果我的龙听到我喊 宝贝 那么我的龙就会 不过来 12345
在python魔法书里,有一个class,叫做类。如果说函数可以当成魔法棒,那么类就是魔法世界里面的神兽了。神兽既有魔法棒一样的魔法合成能力,也有属于它自己的特性。
看看我刚刚变出来的小龙就知道了,里面是有def …( )的。Def可以让神兽有自己的能力的。那么它的特性怎么来呢?魔法书里有一个def__init__(),可以让神兽更生动一些。
class 神兽: def __init__(坐骑,颜色,听见): 坐骑.颜色 = 颜色 坐骑.听见 = 听见 def 听觉(坐骑): if 坐骑.听见 == "求救": 坐骑.方向 = "过来" elif 坐骑.听见 == "宝贝": 坐骑.方向 = '不过来' 我的龙 = 神兽("红色","求救") print("我的龙是",我的龙.颜色,"的") print("如果我的龙听见我",我的龙.听见) 我的龙.听觉() print("那么龙就会往我这边",我的龙.方向) 我的龙.听见 = "宝贝" print("如果我的龙听到我喊",我的龙.听见) 我的龙.听觉() print("那么我的龙就会",我的龙.方向)
1234567891011121314151617181920212223这段魔法要我自己仔细体会其中的奥秘才行。虽然结果和刚才的是一样的,但是__init__( )把神兽的属性初始化了,变出来的看着更像一个有生命的东西。init是initializing初始化的简写。
现在,对我来说,是低阶魔法师很重要很重要的一个时刻,因为后面的魔法咒语会越来越长,咒语怎么念出来的,对魔法师来讲非常非常的重要,这在魔法书上是没有说明的,python只有对每个咒语的功能注释。
这让我想起了,上学时代,老师在课堂上解释着sin,cos,tan的来历,然后就是大段大段的练习题。时间转眼过去了三十年,我已经完全忘记了,sin,cos,tan是怎么来的,忘了这段公式的用法,唯一记得的却是上课时,与同桌之间私底下的小小打闹。
想起来这些,只是自然的发现,如果一味的灌输式学习,基本上就是失败告终吧。
那这个这么有意思的魔法,怎么自学才好呢?
我想到魔法嘛,肯定要先有个想象出来的结果,例如,我想变出一个宠物……
这个应该是可以随着年龄的增长,会提高它的等级和技能的。
所以:
def __init__(宠物): 宠物.年龄= 0 宠物.等级="幼崽" 宠物.技能=[] 宠物.名字="龙猫" 12345
现在我想要的结果应该是:幼崽(可变的)飞龙可以“飞,吐火”(可变的)
def 成长(宠物,时间): 宠物.年龄 = 宠物.年龄 + 时间 if 宠物.年龄 > 8: 宠物.等级 = "成年" elif 宠物.年龄 > 5: 宠物.等级 = "青年" elif 宠物.年龄 > 3: 宠物.等级 = "少年" else: 宠物.等级 = "幼年" 12345678910
我用成长把等级变出来了。现在要变出来的是能给神兽增加技能。增加技能前,我先把这句话前面的意思说出来。
def __str__(宠物): 坐骑 = 宠物.名字 if len(宠物.技能) > 0: # len()len() 方法返回对象长度或项目个数 坐骑 = 坐骑 + "可以" for 加技能 in 宠物.技能: 坐骑 = 坐骑 + 加技能 +"," 坐骑 = 坐骑.strip(",") # strip() 方法用于移除字符串头尾指定的字符 坐骑 = 宠物.等级 + 坐骑 + "。" return 坐骑 123456789
这句话说完了,意思很明显,就是:等级+名字+可变的技能,有技能的时候,坐骑就”可以”….没技能的时候就没有”可以”。技能多的时候,还有个分隔符号。
这段也没什么问题了吧。
def 增加技能(宠物,技能): 宠物.技能.append(技能) 12
增加技能就很简单了。
加上我对我的宠物的表述:
宠物=神兽() print(宠物) print("如果过了4年") 宠物.成长(4) print(宠物) 宠物.增加技能("吐火") 宠物.增加技能("飞行") print(宠物) 12345678
我看一下我完整的咒语效果吧:
class 神兽: def __init__(宠物): 宠物.年龄= 0 宠物.等级="幼崽" 宠物.技能=[] 宠物.名字="龙猫" def 成长(宠物,时间): 宠物.年龄 = 宠物.年龄 + 时间 if 宠物.年龄 > 8: 宠物.等级 = "成年" elif 宠物.年龄 > 5: 宠物.等级 = "青年" elif 宠物.年龄 > 3: 宠物.等级 = "少年" else: 宠物.等级 = "幼年" def __str__(宠物): 坐骑 = 宠物.名字 if len(宠物.技能) > 0: 坐骑 = 坐骑 + "可以" for 加技能 in 宠物.技能: 坐骑 = 坐骑 + 加技能 +"," 坐骑 = 坐骑.strip(",") 坐骑 = 宠物.等级 + 坐骑 + "。" return 坐骑 def 增加技能(宠物,技能): 宠物.技能.append(技能) 宠物=神兽() print(宠物) print("如果过了4年") 宠物.成长(4) print(宠物) 宠物.增加技能("吐火") 宠物.增加技能("飞行") print(宠物)
123456789101112131415161718192021222324252627282930313233343536373839结果是什么样的:
幼崽龙猫。 如果过了4年 少年龙猫。 少年龙猫可以吐火,飞行。 1234
不错哦,我的小龙猫可以啊……
相关知识
python07类是用函数创建的活物
python定义一个dog类 类属性有名字
假设某产品生产的边际成本函数是MC=3Q2
如何理解:行为是结果的函数
寄活物怎么快递
如何利用几何画板做二次函数关于y=x对称的图像
宠物的生长(虚函数和多态)
已知某产品的收益函数R(Q)=302
快递活物为何屡禁不绝
下列选项中,( )是用CREATE语句来创建的。
网址: python07类是用函数创建的活物 https://m.mcbbbk.com/newsview190441.html
上一篇: 成年犬暴饮暴食该如何应对(如何控 |
下一篇: 成年公马的第一次相亲,母马反应令 |