2012-03-18 24 views
1

私は、内部にn個あるサブインスタンスの環境として動作する作成されたインスタンスを作成する方法を考え出しています。内部に複数の動的に相互接続するオブジェクトを持つ全体的な 'ネットワーク'インスタンスを持つようなものです。私の現在のアイデアは、ネットワークインスタンスが最初にインスタンス化され、次に内部で作成された最初のサブオブジェクトです。ネットワークは、入力を受け取り、出力を送信する方法を有し、これらの入力はサブオブジェクトによって通過し、サブオブジェクトは集合的に送信する出力を形成する。Python - 自己複製クラスオブジェクトインスタンスの作成

私が必要とするのは、特定のパラメータが満たされたときにセルを持ち、自身をコピーして別の名前で別の格納データを挿入する新しいオブジェクトを作成する方法です。オリジナルを置き換えるのではなく、ネットワークのインスタンスで集合体を拡張します。これは、オブジェクト名の設定された範囲に話されることなく動的に拡張できるが、自己複製することができるデータベースのようなシステムを可能にする。可能であれば、オブジェクトはインスタンスとして自分自身を複製し、クラスを呼び出すことはありませんが、アイデアは完全に公開されています。

個々のオブジェクトを手動で作成してテストすることができましたが、私はどのように対話することができましたが、オブジェクトクラスを独自のイニシアティブで自己複製する簡単な方法を得ることができませんでした。だから私は本当に必要なものです、テキストの壁には申し訳ありません、そして読書に感謝します。

答えて

1

新しいスタイルのオブジェクトは、その__class__属性にアクセスすることによって、そのクラスへの参照を取得できます。そこからコンストラクタを呼び出したり、クラスの属性を操作したりすることができます。

+0

ありがとう、これは柔軟性を可能にして私の目標を達成する最も直接的な方法を与えるようです。 – Findeccano

1

オブジェクトの現在の状態を親オブジェクトとは独立して変更できるように複製する場合は、copy.deepcopyを使用しますあなたのオブジェクトの値はcopy.copyで十分です。)私は、オブジェクトが自身のコピーを作成し、コピーを格納するコンテナオブジェクト(ネットワーク)のメソッドを呼び出すことをお勧めします。

def replicate(self, ...): 
    clone = copy.deepcopy(self) 
    # Modify clone if necessary 
    network.add(clone) 
関連する問題