2016-10-26 10 views
6

я увидел кусок кода в проекте, где написано следующее:Что делает знак | = (pipe equal) в python?

  move = Move.create({ 
      'name': repair.name, 
      'product_id': repair.product_id.id, 
      'product_uom': repair.product_uom.id or repair.product_id.uom_id.id, 
      'product_uom_qty': repair.product_qty, 
      'partner_id': repair.address_id.id, 
      'location_id': repair.location_id.id, 
      'location_dest_id': repair.location_dest_id.id, 
      'restrict_lot_id': repair.lot_id.id, 
     }) 
     moves |= move 
     moves.action_done() 

Что делает | = смысл здесь?

+5

Он делает то, что делает 'move' решает, что он делает. Обычно это означает «побитовое» или «установить объединение» и присваивать и, как правило, эквивалентно «move = move | move' – AChampion

+0

Похоже, [set union operator] (https://docs.python.org/2/library/sets.html). Предположительно класс 'Move' перегружает это, чтобы разрешить операнды типа' Move' –

+0

FYI: 'set' теперь встроенный тип: https://docs.python.org/2/library/stdtypes.html#set – AChampion

ответ

3

Как @AChampion, уже упомянутый в первом вопросительном комментарии, он может быть «побитовым» или «установить соединение». Хотя этот вопрос имеет Odoo как контекст, он «устанавливает соединение» для класса Odoo RecordSet.

Этот класс был представлен с новым API на Odoo 8. Для других операторов загляните в официальный документ Odoo.

+0

спасибо. да, я изучаю это. –