Hola Jose, el problema que describes es la razon de por que existe el metodo copy.copy() y copy.deepcopy() de la documentacion:
https://docs.python.org/2.7/library/copy.html """ - A *shallow copy* constructs a new compound object and then (to the extent possible) inserts *references* into it to the objects found in the original. - A *deep copy* constructs a new compound object and then, recursively, inserts *copies* into it of the objects found in the original. """ Y para el objeto logging: https://docs.python.org/2.7/library/logging.html?highlight=logging#thread-safety """ The logging module is intended to be thread-safe without any special work needing to be done by its clients. It achieves this though using threading locks; there is one lock to serialize access to the module’s shared data, and each handler also creates a lock to serialize access to its underlying I/O. """ En este caso, probablemente deberas usar un copy() en vez de deepcopy. Espero haberte ayudado. Un saludo. PD: Yo tampoco tengo tildes en el teclado El lun., 26 nov. 2018 a las 23:30, Jose Caballero (<jcaballero....@gmail.com>) escribió: > Hola, > > tengo una clase C, a cuyos objetos puedo, en principio, hacer copias > con copy.deepcopy(). > Sin embargo, cuando a la clase C le agrego logging en el __init__ [1], > ya no funciona [2]. > ?No me queda mas remedio que copiar el objeto "manualmente"? > ?O existe alguna forma limpia de evitar este problema? > > Gracias por adelantado. > Un saludo, y perdon por la falta de tildes. > Jose > > > [1] > def __init__(self): > self.log = logging.getLogger() > logStream = logging.StreamHandler() > .... > self.log.addHandler(logStream) > > [2] > File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy > y = _reconstruct(x, rv, 1, memo) > File "/usr/lib64/python2.7/copy.py", line 334, in _reconstruct > state = deepcopy(state, memo) > File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy > y = copier(x, memo) > File "/usr/lib64/python2.7/copy.py", line 257, in _deepcopy_dict > y[deepcopy(key, memo)] = deepcopy(value, memo) > File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy > y = _reconstruct(x, rv, 1, memo) > File "/usr/lib64/python2.7/copy.py", line 334, in _reconstruct > state = deepcopy(state, memo) > File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy > y = copier(x, memo) > File "/usr/lib64/python2.7/copy.py", line 257, in _deepcopy_dict > y[deepcopy(key, memo)] = deepcopy(value, memo) > File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy > y = copier(x, memo) > File "/usr/lib64/python2.7/copy.py", line 230, in _deepcopy_list > y.append(deepcopy(a, memo)) > File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy > y = _reconstruct(x, rv, 1, memo) > File "/usr/lib64/python2.7/copy.py", line 334, in _reconstruct > state = deepcopy(state, memo) > File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy > y = copier(x, memo) > File "/usr/lib64/python2.7/copy.py", line 257, in _deepcopy_dict > y[deepcopy(key, memo)] = deepcopy(value, memo) > File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy > y = _reconstruct(x, rv, 1, memo) > File "/usr/lib64/python2.7/copy.py", line 334, in _reconstruct > state = deepcopy(state, memo) > File "/usr/lib64/python2.7/copy.py", line 163, in deepcopy > y = copier(x, memo) > File "/usr/lib64/python2.7/copy.py", line 257, in _deepcopy_dict > y[deepcopy(key, memo)] = deepcopy(value, memo) > File "/usr/lib64/python2.7/copy.py", line 190, in deepcopy > y = _reconstruct(x, rv, 1, memo) > File "/usr/lib64/python2.7/copy.py", line 329, in _reconstruct > y = callable(*args) > File "/usr/lib64/python2.7/copy_reg.py", line 93, in __newobj__ > return cls.__new__(cls, *args) > TypeError: object.__new__(thread.lock) is not safe, use > thread.lock.__new__() > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > -- -- Àngel Lis.
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es