Это похоже на вполне разумное использование класса. По сути, вы должны рассмотреть возможность использования класса, когда ваша программа включает в себя вещи, которые можно моделировать как объекты с состоянием. Здесь «состояние» вашего полинома - это просто коэффициенты a
, b
и c
.
Вы также можете использовать специальный метод Python __call__
, чтобы позволить обрабатывать класс, как если бы он был самой функцией:
class quad:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def __call__(x):
return self.a * x**2 + self.b * x + self.c
q = quad(p, q, r)
q(x)
Еще один способ сделать это, который мог бы быть немного чище, - просто вернуть функцию с этими коэффициентами. По сути, это пример карри, как упоминает Тиходрама:
def quad(a, b, c):
def __quad(x):
return a * x**2 + b * x + c
return __quad
Или используя синтаксис lambda
:
def quad(a, b, c):
return lambda x: a * x**2 + b * x + c
Затем их можно использовать так:
q = quad(p, q, r)
q(x)