copy.deepcopy raises TypeError on objects with self-defined __new__() method
问题 I want to implement a symbol type, which keeps track of the symbols we already have(saved in _sym_table ), and return them if they exist, or create new ones otherwise. The code: # -*- coding: utf-8 -*- _sym_table = {} class Symbol(object): def __new__(cls, sym): if sym not in _sym_table: return super().__new__(cls) else: return _sym_table[sym] def __init__(self, sym): self.sym = sym _sym_table[sym] = self def __str__(self): return self.sym def __cmp__(self, other): return self is other def _