Qiskit : 스트링에서 회로에 표준 게이트 추가

Sep 11 2020

회로가 주어 졌을 때 게이트를 추가하려면 아래와 같은 선을 통해 이루어집니다.

mycircuit.cx(0, 1)

여기에서는 0 및 1 큐 비트에 control-X 게이트를 추가했습니다. 이것은 아마도 파이썬 질문 일 수 있지만 문자열 'cx'과 정수가 주어 졌을 때 0, 1즉 수동으로 입력하지 않고 어떻게 이것을 할 수 있습니까?

나는 사용해 보았다 https://stackoverflow.com/questions/3061/calling-a-function-of-a-module-by-using-its-name-a-string 그러나 getattr는 나를 위해 작동하지 않았습니다.

from qiskit import QuantumCircuit
circ = QuantumCircuit(2)
circ.draw()
a = ('cx', 0, 1)
circ = getattr(circ, a[0])(a[1], a[2])
circ.draw()

답변

1 VictoryOmole Sep 11 2020 at 01:51

를 반환하지 않기 AttributeError: 'InstructionSet' object has no attribute 'draw'때문에 얻고 있습니다. 메서드 가 없는를 반환합니다 .getattrQuantumCircuitInstructionSetdraw()

from qiskit import QuantumCircuit
circuit = QuantumCircuit(2)
print(type(circuit)) # prints <class 'qiskit.circuit.quantumcircuit.QuantumCircuit'>
circuit.draw()
a = ('cx', 0, 1)
circuit = getattr(circuit, a[0])(a[1], a[2])
print(type(circuit)) # prints <class 'qiskit.circuit.instructionset.InstructionSet'>

circuit반환 된 항목에 대한 할당을 getatrr제거하면 오류가 제거됩니다.

from qiskit import QuantumCircuit
circuit = QuantumCircuit(2)
circuit.draw()
a = ('cx', 0, 1)
getattr(circuit, a[0])(a[1], a[2])
circuit.draw()