0

ここでstackoverflowで同様の質問を見ましたが、満足のいく回答がありませんでした。(この質問へのリンク - How to copy a python class? )

だから私の質問は、変数Aに格納されているクラスのコピー(クラスのインスタンス)を作成し、これらの変数AとBを相互に依存させずに、このクラスのコピーを新しい変数Bに割り当てる方法はありますか?

明確にするために-非常に簡単な方法はありますか?

モデルの状況は次のとおりです。

class B:
    def __init__(self, li):
        self.l = li * 5
        self.u = 5       

class A:
    def __init__(self):
        self.x = [1, 2, 3]
        self.c = B([45, 1, 3])
    self.i = 1

x = A()
y = x #This copies only reference to x
4

3 に答える 3

4

__copy__()クラスに実装するcopy.copy()と、インスタンスのコピーを作成するために使用できます。これは、Python オブジェクトの性質上、自動的に行うことはできません (インスタンスにどの変数が設定されるかを知る方法はなく、どのように変更されたかを知る方法もありません。データがコピーされることを確認するのはあなた次第です)。正しく)。

通常、通常の方法で機能するクラスを想定する__copy__()と、想定されるクラスについてはおそらく次のような単純なものになりますSomeClass

def __copy__(self):
    return SomeClass(self.somefield, self.otherfield, self.somethingelse)

当然、正確な実装はクラス自体によって大きく異なります。

于 2013-01-18T15:32:31.567 に答える
1

オブジェクトの別のコピーを作成する場合は、copy モジュールを試してください。

于 2013-01-18T15:32:21.820 に答える
0

モジュールで使用deepcopyする方が簡単です。copyええと、これらの微妙な問題の解決策は次のとおりです。http://docs.python.org/2/library/copy.html#copy.deepcopy

于 2013-01-18T16:23:19.370 に答える