本文主要是介绍飘逸的python - 灵活的动态之xxxattr,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
标题的xxxattr指的是hasattr/getattr/setattr/delattr。
可以动态的检测、获取、设置、删除对象的属性和方法。
这里所说的动态,说白了就是“可以通过字符串来做这些事”。
这是一个非常强大灵活的特性。
我举个例子。
有个GM工具来设置玩家角色的属性,比如角色的属性有经验、体力、游戏币。
roletable = {'31415926':{'exp':99,'energy':100,'gamecoin':1000}}#伪角色数据库表
class Role:def __init__(self,id):roleinfo = roletable[id]self.exp = roleinfo['exp']self.energy = roleinfo['energy']self.gamecoin = roleinfo['gamecoin']role = Role('31415926')
从这个GM工具传入程序的参数是角色id(_id),属性名(_attr),属性值(_val)。
换句话说,就是传入的是 字符串。
如果按照常规做法。只能是枚举。
即
if _attr == 'exp':role.exp = _val
elif _attr == 'energy':role.energy == _val
elif _attr == 'gamecoin':role.gamecoin == _val
而在python的动态下,
只需要
setattr(role,_attr,_val)
比如
setattr(role,'gamecoin',888)
print role.gamecoin
输出
888
这篇关于飘逸的python - 灵活的动态之xxxattr的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!