如何使用getattr / setattr在运行时增加属性?

时间:2011-03-13 12:13:04

标签: python

我有一个有十个不同柜台的班级。我需要在运行时递增这些中的一个或另一个,并且递增方法被告知要递增的计数器的名称。

我想知道是否有比这更清洁的方式:

def increment(self, name):
    """Increments a counter specified by the 'name' argument."""
    setattr(self, name, getattr(self, name) + 1)
  • 我对种族状况等并不十分担心。
  • 不,您无法更改调用函数的方式。显然,真实的代码比示例更简单。

1 个答案:

答案 0 :(得分:6)

您可以将计数器存储在字典中而不是存储在属性中。

或者,您可以使用

def increment(self, name):
    """Increments a counter specified by the 'name' argument."""
    self.__dict__[name] += 1

由您来决定这是否“更干净”。