Проверка Python преобразований данных с параметром для ожидаемого результата - PullRequest
1 голос
/ 27 января 2020

Я пишу библиотеку Python функций для преобразования набора данных, и для каждой из них мне нужно выполнить некоторые базовые c проверки преобразованных данных:

  1. Должно быть нет отрицательных значений в наборе данных после преобразования
  2. Сумма всех значений в преобразованном наборе данных должна быть в некотором указанном соотношении к сумме значений до преобразования.

Для первого Задача, я могу дать всем своим функциям декоратор с именем вроде check_for_negatives.

Однако для второй задачи отношение вывода к вводу будет меняться при каждом вызове конкретной функции, в зависимости от ввода параметры - так что вызывающая сторона может ожидать, что сумма набора данных не изменится или будет равна x1,5 для различных вызовов одной и той же функции.

Единственный способ, которым я могу это сделать с помощью декораторов, - это иметь декоратор для проверки отношения ввода: вывода, но передать ожидаемое соотношение в качестве аргумента самой функции (хотя функция не будет использовать его напрямую). Это не кажется очень хорошим; есть ли лучший способ?

1 Ответ

1 голос
/ 27 января 2020

Вы можете использовать класс в качестве декоратора, чтобы вы могли определять переменные экземпляра, которые вы можете изменять во время выполнения. Пример реализации здесь

в вашем случае у вас будет переменная экземпляра ratio, чтобы перед каждым вызовом оформленной функции foo вы могли установить foo.ratio в соответствующее значение.

...