Cercando di comprendere questo errore nella mia classe "Variable".TypeError: impossibile eseguire il deepcopy dell'oggetto pattern
Speravo di memorizzare un sre.SRE_Pattern nella mia classe "Variable". Ho appena iniziato a copiare la classe Variable e ho notato che stava causando la modifica di tutte le istanze della classe Variable. Ora capisco che ho bisogno di approfondire questa classe, ma ora mi imbatto in "TypeError: can not deepcopy this pattern object". Certo, posso memorizzare il pattern come una stringa di testo, ma il resto del mio codice si aspetta già un pattern compilato! Quale sarebbe il modo migliore per copiare la mia classe Variable con un oggetto modello?
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)
Dato che il compilatore regexp è immutabile, non è necessario deepcopy esso. Comunque non ricordo come dire 'deepcopy()' come gestire un particolare tipo (ma nota, che * puoi * aggiungere attributi al tipo di build se necessario). –
Quale riga del codice lancia l'eccezione? L'ho copiato e poi compilato -> funziona senza errori al mio fianco. L'unica cosa che ho trovato è che provi a usare variabili che riscrivono il metodo 'type' di python e questo non è uno stile molto buono. –
L'ultima riga genera l'errore per me in Python 2.6. –