我有一个User类,里面有多个属性,我也有User类的addPoint方法,允许用户将点输入到它的任何属性中.但是,最多可以有500个属性,每个人都可以拥有不同的属性等等.因此,使用"if: - elif:"对每个属性进行编码会很麻烦.现在这就是我尝试做的事情,让它变得更容易和更清洁:
class User:
def __init__(self):
self.health = 0
self.speed = 0
def addPoint(self, property, amount):
eval("self."+property) = eval("self."+property) + amount
Run Code Online (Sandbox Code Playgroud)
而现在,当我做fe.
u = User()
u.addPoint("health", 5)
Run Code Online (Sandbox Code Playgroud)
我希望它能做到这一点:self.health = self.health + 5那就是我用过的东西eval().但是,Python只是给我错误:can't assign to function call.我不是试图分配eval()函数调用本身,我正在尝试分配返回的值eval(),所以我怎么能以最简单的方式做到这一点?
Mar*_*ers 11
不要使用eval(),使用setattr()和getattr()代替:
setattr(self, property, getattr(self, property) + amount)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |