Skip to main content
IBM Quantum Platform

Protocolos

Este módulo fornece vários protocolos utilizados em todo o pacote.

A é typing.Protocol uma interface que uma classe pode implementar estruturalmente, sem herdar explicitamente dela. Por exemplo, qualquer classe que implemente um método __len__ satisfaz essa condição Sized, independentemente de isso estar indicado em algum lugar da hierarquia da classe.

Os protocolos deste módulo seguem a mesma ideia, mas cada um deles se concentra em um único método do tipo “dunder”, que, por si só, não teria nada de especial (por exemplo _linear_operator_). Uma classe que implemente esse método satisfaz, assim, o protocolo correspondente — SupportsLinearOperator neste exemplo — e passa a poder ser utilizada em qualquer lugar onde esse protocolo seja esperado, sem qualquer registro explícito. Observe que o termo “protocolo” às vezes também é usado de forma mais ampla para se referir à função de despacho independente de tipo construída com base em um protocolo (por exemplo linear_operator()), em vez da própria interface; a distinção deve ficar clara a partir do contexto.

A maioria dos protocolos a seguir segue esse padrão, combinada com uma pequena função auxiliar independente de tipo que encaminha a chamada para o método do protocolo, independentemente do objeto que lhe seja passado:

Protocolo
Método
Função auxiliar
SupportsFermionOperator_fermion_operator_(self)fermion_operator()
SupportsMajoranaOperator_majorana_operator_(self)majorana_operator()
SupportsLinearOperator_linear_operator_(self, norb, nelec)linear_operator()
SupportsApplyUnitary_apply_unitary_(self, vec, norb, nelec, copy)apply_unitary()
SupportsApplyUnitaryPlaced_apply_unitary_placed_(self, vec, norb, nelec, copy, freg_indices)
SupportsCommutators_commutator_, _anti_commutator_, _double_commutator_ (todos @staticmethod)commutator(), anti_commutator(), double_commutator()
SupportsApplyUnitary(*args, **kwargs)Um espelho do protocolo ffsim.SupportsApplyUnitary .
SupportsApplyUnitaryPlaced(*args, **kwargs)Uma extensão específica do pacote que contém SupportsApplyUnitary um posicionamento de modo.
SupportsCommutators(*args, **kwargs)Um protocolo que indica suporte à geração eficiente de comutadores.
SupportsFermionOperator(*args, **kwargs)Um equivalente ao protocolo ffsim.SupportsFermionOperator .
SupportsLinearOperator(*args, **kwargs)Um espelho do protocolo ffsim.SupportsLinearOperator .
SupportsMajoranaOperator(*args, **kwargs)Um equivalente ao protocolo SupportsFermionOperator , voltado para operadores de Majorana.
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.