From 587d3bf78a091c9629fc7952e47197838d338d47 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Fri, 17 May 2013 16:43:14 -0700 Subject: [PATCH] Update docstring for _asdict() to indicate it is obsolete. Use the cleaner looking @property style for __dict__. Move _replace() to be just after make() to indicate that it is a core method on named tuples. --- Lib/collections/__init__.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 5ba29e6aba3..254409b4f28 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -236,7 +236,7 @@ class OrderedDict(dict): ### namedtuple ################################################################################ -_class_template = '''\ +_class_template = """\ from builtins import property as _property, tuple as _tuple from operator import itemgetter as _itemgetter from collections import OrderedDict @@ -260,16 +260,6 @@ class {typename}(tuple): raise TypeError('Expected {num_fields:d} arguments, got %d' % len(result)) return result - def __repr__(self): - 'Return a nicely formatted representation string' - return self.__class__.__name__ + '({repr_fmt})' % self - - def _asdict(self): - 'Return a new OrderedDict which maps field names to their values' - return OrderedDict(zip(self._fields, self)) - - __dict__ = property(_asdict) - def _replace(_self, **kwds): 'Return a new {typename} object replacing specified fields with new values' result = _self._make(map(kwds.pop, {field_names!r}, _self)) @@ -277,6 +267,21 @@ class {typename}(tuple): raise ValueError('Got unexpected field names: %r' % list(kwds)) return result + def __repr__(self): + 'Return a nicely formatted representation string' + return self.__class__.__name__ + '({repr_fmt})' % self + + @property + def __dict__(self): + 'A new OrderedDict mapping field names to their values' + return OrderedDict(zip(self._fields, self)) + + def _asdict(self): + '''Return a new OrderedDict which maps field names to their values. + This method is obsolete. Use vars(nt) or nt.__dict__ instead. + ''' + return self.__dict__ + def __getnewargs__(self): 'Return self as a plain tuple. Used by copy and pickle.' return tuple(self) @@ -286,7 +291,7 @@ class {typename}(tuple): return None {field_defs} -''' +""" _repr_template = '{name}=%r'