試圖在我的「變量」類中理解此錯誤。TypeError:無法深度複製此模式對象
我希望存儲sre.SRE_Pattern在我的「變量」類。我剛剛開始複製Variable類,並注意到它正在導致我所有的Variable類實例發生更改。我現在明白我需要深入研究這個類,但是現在我遇到了「TypeError:無法深度拷貝這個模式對象」。當然,我可以將模式存儲爲文本字符串,但我的代碼的其餘部分已經期望編譯模式!用模式對象複製我的Variable類最好的方法是什麼?
import re
from copy import deepcopy
class VariableWithRE(object):
"general variable class"
def __init__(self,name,regexTarget,type):
self.name = name
self.regexTarget = re.compile(regexTarget, re.U|re.M)
self.type = type
class VariableWithoutRE(object):
"general variable class"
def __init__(self,name,regexTarget,type):
self.name = name
self.regexTarget = regexTarget
self.type = type
if __name__ == "__main__":
myVariable = VariableWithoutRE("myName","myRegexSearch","myType")
myVariableCopy = deepcopy(myVariable)
myVariable = VariableWithRE("myName","myRegexSearch","myType")
myVariableCopy = deepcopy(myVariable)
由於編譯器的正則表達式是不可改變的,這是沒有必要deepcopy的它。但是我不記得如何告訴'deepcopy()'如何處理一個特定的類型(但是請注意,如果需要,你可以*向屬性中添加屬性)。 – 2011-06-08 13:22:48
從你的代碼拋出異常的哪行?我已經複製它並編譯,然後 - >它在我身邊沒有任何錯誤。我唯一發現的是,你嘗試使用重寫python方法'type'的變量,這不是很好的風格。 – 2011-06-08 13:24:15
最後一行在Python 2.6中引發了我的錯誤。 – 2011-06-10 07:19:04