飘逸的python - 灵活的动态之xxxattr
来源:互联网 发布:手机淘宝看实名认证 编辑:程序博客网 时间:2024/06/04 18:12
标题的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 = _valelif _attr == 'energy': role.energy == _valelif _attr == 'gamecoin': role.gamecoin == _val
而在python的动态下,
只需要
setattr(role,_attr,_val)
比如
setattr(role,'gamecoin',888)print role.gamecoin
输出
888
- 飘逸的python - 灵活的动态之xxxattr
- 飘逸的python
- 飘逸的python
- 飘逸的python
- 飘逸的python
- 飘逸的python - 赛程表算法
- 飘逸的python - 赛程表算法
- 飘逸的python - and_or大法
- 飘逸的python - 常见的几个坑
- 飘逸的python - __dict__的妙用
- 飘逸的python - 优雅的执行程序
- 飘逸的python - 彩色你的控制台
- 飘逸的python - 鲜为人知的参数
- 飘逸的python - 装饰器的本质
- 飘逸的python - str vs. repr
- 飘逸的python - 偏函数functools.partial
- 飘逸的python - 发送qq邮件
- 飘逸的python - 字典合并值相加
- notify() and notifyAll():
- 集合(一)
- uva 340
- Eclipse maven工程 Missing artifact com.sun:tools:jar:1.6.0:system 解决方法
- sqlserver2005使用convert转换日期
- 飘逸的python - 灵活的动态之xxxattr
- HOOK API完全手册(转载+整理)
- js基础篇
- PIE Chapter 6--Java代码
- 首次发布App,In-App Purchase 无法submit for review 问题的解决方案
- CPU寄存器(转载+整理)
- PIE Chapter 7 -- Recursion递归- Java
- const指针(转载+整理)
- linux ioctl与ptrace(转载+整理)