Следующий код представляет собой упрощенный пример задачи, над которой я работаю, с использованием Python, которая кажется естественным образом подходящей для стиля ООП:
class Foo:
def __init__(self):
self.x = 1
self.y = 1
self.z = 1
def method(self):
return bar(self.x,self.y,self.z)
def bar(x,y,z):
return x+y+z
f = Foo()
print(f.method())
В приведенном выше примере кода яв моем объекте три переменные экземпляра, но в моем реальном приложении это будет больше похоже на 10 или 15 переменных, и если я реализую то, что имею в виду, в этом стиле, то я получу много кода, которыйвыглядит примерно так:
return bar(self.a.self.b,self.c,self.d,self.e,self.f,self.g,self.h,self.i)
Ух ты, было бы неплохо написать это в стиле, похожем на этот:
return bar(a,b,c,d,e,f,g,h,i)
Это было бы намного более лаконично иудобочитаемый.Один из способов сделать это - переписать строку так, чтобы она принимала объект Foo в качестве входных данных, а не набор скалярных переменных, но я бы предпочел этого не делать.На самом деле, это просто подтолкнуло бы синтаксическую ошибку в функцию bar, где, я думаю, у меня был бы код, который выглядел бы так:
def bar(f):
return f.a+f.b+f.c
Есть ли лучший способ справиться с этим?Насколько я понимаю, без «я» я бы ссылался на переменные класса, а не на переменные экземпляра.Я думал об использовании словаря, но это кажется еще более грубым, со всеми ["a"] вещами.Может ли быть какой-то автоматизированный способ взять словарь с ключами типа "a", "b", "c", ... и разгрузить значения в локальные переменные с именами a, b, c и т. Д.?