Зацикливание на операторе

#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