纯函数实现面向对象
2022/7/1 23:23:44
本文主要是介绍纯函数实现面向对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#人狗大战游戏 #人——角色 # 名称 等级 血量hp 攻击力ad 性别 职业 #狗——角色 # 名称 品种 血量 攻击力 #动作——人打狗,狗咬人 缺点:没有限定动作的发起者,人也可以调用bite()咬狗
#人——角色模板 def person(name,hp,ad,sex,job,level=1): person_dict={'name':name, 'hp':hp,'ad':ad, 'sex':sex,'job':job} return person_dict zs=person('张三',200,40,'男','射手') lisi=person('李四',300,30,'男','战士') # print(lisi) #狗——角色模板 def dog(name,kind,hp,ad): dog_dict={'name':name,'kind':kind,'hp':hp,'ad':ad} return dog_dict tg=dog('天狗','拉布拉多',1000,50) jq=dog('警犬','藏獒',800,60) # print(tg) #人打狗,狗掉血 def attack(person,dog): dog['hp']=dog['hp']-person['ad'] print('%s攻击了%s,%s掉了%s的血,还剩%s血'%( person['name'], dog['name'], dog['name'], person['ad'], dog['hp'])) attack(lisi,tg) #狗咬人,人掉血 def bite(dog,person): person['hp'] = person['hp'] - dog['ad'] print('%s攻击了%s,%s掉了%s的血,还剩%s血'%( dog['name'], person['name'], person['name'], dog['ad'], person['hp'])) bite(jq,zs) # bite(zs,jq) #人咬狗也可以,没有限定住
使用闭包优化
将动作写在动作发起者函数中,变成二级函数,限定动作发起者
#优化人打狗 def person(name,hp,ad,sex,job,level=1): person_dict={'name':name, 'hp':hp,'ad':ad, 'sex':sex,'job':job} def attack(dog): dog['hp'] = dog['hp'] - person_dict['ad'] print('%s攻击了%s,%s掉了%s的血,还剩%s血'%( person_dict['name'], dog['name'], dog['name'], person_dict['ad'], dog['hp'])) person_dict['attack']=attack return person_dict zs=person('张三',200,40,'男','射手') # print(zs) zs['attack'](tg) #优化狗咬人 def dog(name,kind,hp,ad): dog_dict={'name':name,'kind':kind,'hp':hp,'ad':ad} # 狗咬人,人掉血 def bite(person): person['hp'] = person['hp'] - dog_dict['ad'] print('%s攻击了%s,%s掉了%s的血,还剩%s血' % ( dog_dict['name'], person['name'], person['name'], dog_dict['ad'], person['hp'])) dog_dict['bite']=bite return dog_dict tg=dog('天狗','拉布拉多',1000,50) jq=dog('警犬','藏獒',800,60) jq['bite'](lisi)
这篇关于纯函数实现面向对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding