Tengo una clase con diez contadores diferentes. Necesito incrementar uno u otro de estos en tiempo de ejecución, y al método de incremento se le dice el nombre del contador para incrementar.¿Cómo incremento un atributo en tiempo de ejecución usando getattr/setattr?
Me pregunto si hay una manera más limpia que esto:
def increment(self, name):
"""Increments a counter specified by the 'name' argument."""
setattr(self, name, getattr(self, name) + 1)
- no estoy terriblemente preocupado por las condiciones de carrera y similares.
- No, no puede cambiar la forma en que se llama a la función. Obviamente, el código real es un poco menos trivial que el ejemplo.
¿Sería posible tener un diccionario de nombres en los contadores? –
Como se señala en los comentarios de las respuestas a continuación, no, no tiene un diccionario de contadores. –