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

Ida*_*zit 6 python

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

我想知道是否有比这更简洁的方法:

def increment(self, name):
    """Increments a counter specified by the 'name' argument."""
    setattr(self, name, getattr(self, name) + 1)
Run Code Online (Sandbox Code Playgroud)
  • 我对种族状况等并不十分担心.
  • 不,你不能改变调用函数的方式.显然,真实代码比示例稍微简单一些.

Sve*_*ach 6

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

或者,您可以使用

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

由你来决定这是否"更清洁".