内部に複数のプロパティを持つ 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
そして今、私がfeをするとき。
u = User()
u.addPoint("health", 5)
私はこれをしたいと思います: self.health = self.health + 5
、そしてそれが私がeval()
s を使用した理由です。ただし、Python は私にエラーを与えているだけです: can't assign to function call
. 関数呼び出し自体を割り当てようとしているのではなくeval()
、からの戻り値を割り当てようとしているのですがeval()
、これを最も簡単な方法で行うにはどうすればよいでしょうか?