2012-03-26 36 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 

與上面的代碼,模仿當一個對象時,初始化代碼仍會被調用的問題,但有不需要獲得初始值。

如何在不運行初始化代碼的情況下複製field1?我查找了關於__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 2012-03-26 07:10:55