Changeset 388 for python/vendor/current/Lib/copy.py
- Timestamp:
- Mar 19, 2014, 11:11:30 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/vendor/current/Lib/copy.py
r2 r388 50 50 51 51 import types 52 import weakref 52 53 from copy_reg import dispatch_table 53 54 … … 103 104 frozenset, type, xrange, types.ClassType, 104 105 types.BuiltinFunctionType, type(Ellipsis), 105 types.FunctionType ):106 types.FunctionType, weakref.ref): 106 107 d[t] = _copy_immutable 107 108 for name in ("ComplexType", "UnicodeType", "CodeType"): … … 221 222 d[types.BuiltinFunctionType] = _deepcopy_atomic 222 223 d[types.FunctionType] = _deepcopy_atomic 224 d[weakref.ref] = _deepcopy_atomic 223 225 224 226 def _deepcopy_list(x, memo): … … 259 261 d[PyStringMap] = _deepcopy_dict 260 262 263 def _deepcopy_method(x, memo): # Copy instance methods 264 return type(x)(x.im_func, deepcopy(x.im_self, memo), x.im_class) 265 _deepcopy_dispatch[types.MethodType] = _deepcopy_method 266 261 267 def _keep_alive(x, memo): 262 268 """Keeps a reference to the object x in the memo. … … 323 329 y = callable(*args) 324 330 memo[id(x)] = y 325 if listiter is not None: 326 for item in listiter: 327 if deep: 328 item = deepcopy(item, memo) 329 y.append(item) 330 if dictiter is not None: 331 for key, value in dictiter: 332 if deep: 333 key = deepcopy(key, memo) 334 value = deepcopy(value, memo) 335 y[key] = value 331 336 332 if state: 337 333 if deep: … … 349 345 for key, value in slotstate.iteritems(): 350 346 setattr(y, key, value) 347 348 if listiter is not None: 349 for item in listiter: 350 if deep: 351 item = deepcopy(item, memo) 352 y.append(item) 353 if dictiter is not None: 354 for key, value in dictiter: 355 if deep: 356 key = deepcopy(key, memo) 357 value = deepcopy(value, memo) 358 y[key] = value 351 359 return y 352 360 … … 411 419 print map(repr.repr, l2) 412 420 print map(repr.repr, l3) 421 class odict(dict): 422 def __init__(self, d = {}): 423 self.a = 99 424 dict.__init__(self, d) 425 def __setitem__(self, k, i): 426 dict.__setitem__(self, k, i) 427 self.a 428 o = odict({"A" : "B"}) 429 x = deepcopy(o) 430 print(o, x) 413 431 414 432 if __name__ == '__main__':
Note:
See TracChangeset
for help on using the changeset viewer.