From 870c2f1e656806723f3c704da81eff478cc38221 Mon Sep 17 00:00:00 2001 From: dsdsdshe Date: Thu, 6 Nov 2025 19:17:07 +0800 Subject: [PATCH] refactor(circuit): Rebuild gates in apply_value via __call__ Adjusted `Circuit.apply_value` to rebuild gates via their `__call__` method. This preserves custom initialization paths for complex gates like `UCCExcitationGate` when updating coefficients. --- mindquantum/core/circuit/circuit.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/mindquantum/core/circuit/circuit.py b/mindquantum/core/circuit/circuit.py index b6f16ba29..a0488122e 100644 --- a/mindquantum/core/circuit/circuit.py +++ b/mindquantum/core/circuit/circuit.py @@ -1026,7 +1026,16 @@ class Circuit(list): # pylint: disable=too-many-instance-attributes,too-many-pu coeff.const += pr[k] * v coeff.pop(k) coeffs.append(coeff) - circuit += gate.__class__(*coeffs).on(gate.obj_qubits, gate.ctrl_qubits) + try: + new_gate = gate(*coeffs) + except TypeError as first_exc: + if len(coeffs) == 1: + raise + try: + new_gate = gate(coeffs) + except TypeError as second_exc: + raise first_exc from second_exc + circuit += new_gate return circuit @staticmethod -- Gitee