私のプロジェクトでは、Circuit
とSubCircuit
という2つのクラスがあります。ある時点でCircuit
からSubCircuit
を構築する必要があるかもしれません。最後の4行で以下のことを行うよりも、よりエレガントな方法がありますか? Circuit
は、たとえばある時点で新しい属性を取得する可能性があります。これは、変換も更新する必要があることを意味し、基本的にはバグを招きます。Python:スーパークラスから複数継承のサブクラスインスタンスを構築する
class Gate(abc.ABC):
def __init__(self, size):
self.in_ports = (InPort(self),) * size
self.out_ports = (OutPort(self),) * size
class Circuit:
def __init__(self, size):
self.input = (OutPort(self),) * size
self.output = (InPort(self),) * size
self.gates = []
# ... some other stuff that messes around with these attributes
class SubCircuit(Gate, Circuit):
def __init__(self, circuit=None):
Gate.__init__(self, size)
Circuit.__init__(self, size)
if circuit is not None:
self.gates = circuit.gates
self.input = circuit.input
self.output = circuit.output
その動作は、回路が編集されると、他の回路でそれを表すサブ回路構成要素も同様に編集されるべきである。このバグをすぐに考慮する理由はありますか? –
いいえ、それは望みの結果です。すべての言及を「コピー」するだけです。予期せぬものであるかもしれません。 – jsbueno
それから、上のliens [ - :3-1]の 'for'ループの代わりに' self .__ dict____ update(circuit .__ dict__) 'を実行するだけです。 – jsbueno