Message201024
| Author |
Kassym.Dorsel |
| Recipients |
Kassym.Dorsel, alexandre.vassalotti |
| Date |
2013年10月23日.13:49:42 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1382536183.12.0.651276140754.issue19364@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
When __getattr__ is implemented without also implementing __copy__ and __deepcopy__ trying to (deep)copy the class fails.
>>> import copy
>>> class foo():
... def __getattr__(self, attr):
... return None
...
>>> f = foo()
>>> copy(f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
The copy module checks if a class has implemented __copy__ using hasattr:
if hasattr(x, '__copy__'):
...
An easy fix would be to use:
if getattr(x, '__copy__', None):
...
In Python 3 this change has already been made. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2013年10月23日 13:49:43 | Kassym.Dorsel | set | recipients:
+ Kassym.Dorsel, alexandre.vassalotti |
| 2013年10月23日 13:49:43 | Kassym.Dorsel | set | messageid: <1382536183.12.0.651276140754.issue19364@psf.upfronthosting.co.za> |
| 2013年10月23日 13:49:43 | Kassym.Dorsel | link | issue19364 messages |
| 2013年10月23日 13:49:42 | Kassym.Dorsel | create |
|