返回::[wiki:self/PyIAQ Python 罕见问题集]

::-- ZoomQuiet [DateTime(2005-09-06T04:10:30Z)] TableOfContents

1. 问:创建对象很爽,但是如何更新?

Q: That's great for creating objects; How about for updating? Well, dictionaries have an update method, so you could do d.update(Dict(a=100, b=200)) when d is a dictionary. There is no corresponding method for objects, so you have to do obj.a = 100; obj.b = 200. Or you could define one function to let you do update(x, a=100, b=200) when x is either a dictionary or an object:

   1 import types
   2 
   3 def update(x, **entries):
   4     if type(x) == types.DictType: x.update(entries)
   5     else: x.__dict__.update(entries)
   6     return x

This is especially nice for constructors:

   1       def __init__(self, a, b, c, d=42, e=None, f=()):
   2         update(self, a=a, b=b, c=c, d=d, e=e, f=f)