Tratando de entender este error en mi clase "Variable".TypeError: no se puede hacer una copia profunda de este objeto de patrón
Tenía la esperanza de almacenar un sre.SRE_Pattern en mi clase "Variable". Acabo de comenzar a copiar la clase Variable y noté que estaba causando que todas las instancias de la clase Variable cambiasen. Ahora entiendo que necesito hacer una copia profunda de esta clase, pero ahora me encuentro con "TypeError: no se puede hacer una copia profunda de este objeto de patrón". Claro, puedo almacenar el patrón como una cadena de texto, pero el resto de mi código ya espera un patrón compilado. ¿Cuál sería la mejor manera de copiar mi clase Variable con un objeto de patrón?
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)
Dado que la expresión regular compilador es inmutable, no es necesario que DeepCopy. Sin embargo, no recuerdo cómo se dice 'deepcopy()' cómo manejar un tipo particular (pero tenga en cuenta que * puede * agregar atributos al tipo de compilación si es necesario). –
¿Qué línea de tu código arroja una excepción? Lo he copiado y compilado, entonces -> funciona sin ningún error a mi lado. Lo único que encontré es que intentas usar una variable que reescribe el método de python 'type' y este no es un estilo muy bueno. –
La última línea me arroja el error en Python 2.6. –