#python #python-3.x #operators
#python #python-3.x #операторы
Вопрос:
Я пишу тест для класса типов, и мне было интересно, есть ли способ зацикливания и изменения оператора? итак, цикл завершен [ , -, *, / , // ]
итак, что я хочу сделать, это :
for op in operators:
assert 2 op my_type == 2 op my_type.num_atr # op being the operator , - etc
так что это будет то же самое, что
assert 2 my_type == 2 my_type.num_atr
assert 2 - my_type == 2 - my_type.num_atr
assert 2 * my_type == 2 * my_type.num_atr
# ....
Возможно ли это как-то? Я понимаю, что это несколько просто синтаксический сахар и что операторов не слишком много, но это позволило бы быстрее изменять все тесты одновременно.
Ответ №1:
Как насчет operator
модуля? Или просто напишите операцию как функцию.
import operator
for op in (
operator.add,
operator.sub,
operator.mul,
operator.div,
operator.floordiv,
):
assert op(2, my_type) == op(2, my_type.num_atr) # op being the operator , - etc