试图理解我的“变量”类中的这个错误。
我希望在我的“Variable”类中存储 sre.SRE_Pattern 。我刚刚开始复制 Variable 类,并注意到它导致我的所有 Variable 类实例发生更改。我现在明白我需要深度复制此类,但现在遇到“TypeError:无法深度复制此模式对象”。当然,我可以将模式存储为文本字符串,但我的代码的其余部分已经需要编译模式!使用模式对象复制变量类的最佳方法是什么?
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
如何通过实现来复制对象__deepcopy__()
method:
class VariableWithoutRE(object):
# ...
def __deepcopy__(self):
return VariableWithoutRE(self.name, self.regexTarget, self.type)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)