"Variable"クラスでこのエラーを理解しようとしています。TypeError:このパターンオブジェクトをdeepcopyできません
「変数」クラスに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()'に特定の型を扱う方法を教えているのを覚えていません(ただし、必要に応じて型に属性を追加することができます)。 –
コードから例外をスローする行はありますか?私はそれをコピーしてコンパイルしました - >それは私の側でエラーなしで動作します。私が見つけた唯一の事は、Pythonのメソッド 'type'を書き直す変数を使用しようとすることです。これはあまり良いスタイルではありません。 –
最後の行はPython 2.6で私のためにエラーをスローします。 –