Я хочу использовать метод класса, который определяет, какой атрибут нужно изменить, основываясь на аргументе метода. Вот очень простая аналогичная версия:
class Data:
def __init__(self):
self.a = 1
self.b = 1
def increment(self, a_or_b):
variable = {'a': self.a, 'b': self.b}[a_or_b]
variable += 1
d1 = Data()
d1.increment(a_or_b='a')
print(d1.a)
Я хочу, чтобы d1.a
равнялось 2, но оно равно 1, потому что атрибут класса на самом деле не был изменен, только переменная variable
. Вместо этого я мог бы определить приращение как:
def increment(self, a_or_b):
if a_or_b is 'a':
self.a += 1
else:
self.b += 1
Но это кажется громоздким, особенно если я хочу весь алфавит, а не только первые две буквы. Есть ли способ сделать вместо variable
ссылку на self.a
или self.b
, чтобы атрибут был изменен?