]> granicus.if.org Git - python/commitdiff
Small improvement to the implementation of __replace__().
authorRaymond Hettinger <python@rcn.com>
Thu, 15 Nov 2007 02:55:42 +0000 (02:55 +0000)
committerRaymond Hettinger <python@rcn.com>
Thu, 15 Nov 2007 02:55:42 +0000 (02:55 +0000)
Doc/library/collections.rst
Lib/collections.py

index 2d7f0a924398dfe1df9d0c74eb6e615ad6f8c616..1e7b427dc45884123f84257622fb5d4c0e827494 100644 (file)
@@ -396,7 +396,7 @@ Example::
                return dict(zip(('x', 'y'), self))
            def __replace__(self, field, value):
                'Return a new Point object replacing specified fields with new values'
-               return Point(**dict(self.__asdict__().items() + kwds.items()))
+               return Point(**dict(zip(('x', 'y'), self) + kwds.items()))
            x = property(itemgetter(0))
            y = property(itemgetter(1))
 
index 6b2e58d596f2b6717a8ecc5c0aacc2ec2939e65d..7381a3a90e8fadb9072766d333aa1dbe8b7f2d26 100644 (file)
@@ -64,7 +64,7 @@ def namedtuple(typename, field_names, verbose=False):
             return dict(zip(%(field_names)r, self))
         def __replace__(self, **kwds):
             'Return a new %(typename)s object replacing specified fields with new values'
-            return %(typename)s(**dict(self.__asdict__().items() + kwds.items()))  \n''' % locals()
+            return %(typename)s(**dict(zip(%(field_names)r, self) + kwds.items()))  \n''' % locals()
     for i, name in enumerate(field_names):
         template += '        %s = property(itemgetter(%d))\n' % (name, i)
     if verbose: