2012-03-26 10 views
3

私はこのようになりますどのクラスのために自分自身のコピー方法を実装する:上記のコードの問題はAのオブジェクトをコピーするときに、初期化コードがあるにもかかわらず呼び出されるということですPythonでオブジェクトをコピーするときの初期化をスキップする方法は?

class A(object): 
    def __init__(self): 
     self.field1 = generate_a_list_of_ints() 
    def __copy__(self): 
     result = A() 
     result.fiel1[:] = self.field1[:] 
     return result 

初期値を取得する必要はありません。

初期化コードを実行せずにフィールド1をコピーするにはどうすればよいですか?私は__new__についての情報を探しましたが、そのほとんどは関係のない工場やものを指していました。初期化をスキップする方法はまだ分かりません。

答えて

2

私はそうのように、あなたの__init__()方法でオプションの引数を示唆:はい、それは良いアイデアだ

class A(object): 
    def __init__(self, init=True): 
     if init: 
      self.field1 = generate_a_list_of_ints() 
    def __copy__(self): 
     result = A(init=False) 
     result.fiel1[:] = self.field1[:] 
     return result 
+0

。ありがとうございました。私は受け入れの前にもう少し時間を待つつもりです。 – Abdallah

関連する問題