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.
This commit is contained in:
Raymond Hettinger 2013-05-17 16:43:14 -07:00
parent d2b58a9880
commit 587d3bf78a
1 changed files with 17 additions and 12 deletions

View File

@ -236,7 +236,7 @@ class OrderedDict(dict):
### namedtuple ### namedtuple
################################################################################ ################################################################################
_class_template = '''\ _class_template = """\
from builtins import property as _property, tuple as _tuple from builtins import property as _property, tuple as _tuple
from operator import itemgetter as _itemgetter from operator import itemgetter as _itemgetter
from collections import OrderedDict from collections import OrderedDict
@ -260,16 +260,6 @@ class {typename}(tuple):
raise TypeError('Expected {num_fields:d} arguments, got %d' % len(result)) raise TypeError('Expected {num_fields:d} arguments, got %d' % len(result))
return 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): def _replace(_self, **kwds):
'Return a new {typename} object replacing specified fields with new values' 'Return a new {typename} object replacing specified fields with new values'
result = _self._make(map(kwds.pop, {field_names!r}, _self)) 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)) raise ValueError('Got unexpected field names: %r' % list(kwds))
return result 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): def __getnewargs__(self):
'Return self as a plain tuple. Used by copy and pickle.' 'Return self as a plain tuple. Used by copy and pickle.'
return tuple(self) return tuple(self)
@ -286,7 +291,7 @@ class {typename}(tuple):
return None return None
{field_defs} {field_defs}
''' """
_repr_template = '{name}=%r' _repr_template = '{name}=%r'