mirror of https://github.com/python/cpython
Fix named tuples to work with vars().
This commit is contained in:
parent
19b851d11b
commit
45b082935d
|
@ -623,7 +623,9 @@ Example:
|
|||
'Return a new OrderedDict which maps field names to their values'
|
||||
return OrderedDict(zip(self._fields, self))
|
||||
<BLANKLINE>
|
||||
def _replace(_self, **kwds):
|
||||
__dict__ = property(_asdict)
|
||||
<BLANKLINE>
|
||||
def _replace(_self, **kwds):
|
||||
'Return a new Point object replacing specified fields with new values'
|
||||
result = _self._make(map(kwds.pop, ('x', 'y'), _self))
|
||||
if kwds:
|
||||
|
|
|
@ -312,6 +312,7 @@ def namedtuple(typename, field_names, verbose=False, rename=False):
|
|||
def _asdict(self):
|
||||
'Return a new OrderedDict which maps field names to their values'
|
||||
return OrderedDict(zip(self._fields, self)) \n
|
||||
__dict__ = property(_asdict) \n
|
||||
def _replace(_self, **kwds):
|
||||
'Return a new %(typename)s object replacing specified fields with new values'
|
||||
result = _self._make(map(kwds.pop, %(field_names)r, _self))
|
||||
|
|
|
@ -78,12 +78,12 @@ class TestNamedTuple(unittest.TestCase):
|
|||
self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals()) # wrong keyword argument
|
||||
self.assertRaises(TypeError, eval, 'Point(x=1)', locals()) # missing keyword argument
|
||||
self.assertEqual(repr(p), 'Point(x=11, y=22)')
|
||||
self.assertNotIn('__dict__', dir(p)) # verify instance has no dict
|
||||
self.assertNotIn('__weakref__', dir(p))
|
||||
self.assertEqual(p, Point._make([11, 22])) # test _make classmethod
|
||||
self.assertEqual(p._fields, ('x', 'y')) # test _fields attribute
|
||||
self.assertEqual(p._replace(x=1), (1, 22)) # test _replace method
|
||||
self.assertEqual(p._asdict(), dict(x=11, y=22)) # test _asdict method
|
||||
self.assertEqual(vars(p), p._asdict()) # verify that vars() works
|
||||
|
||||
try:
|
||||
p._replace(x=1, error=2)
|
||||
|
|
|
@ -16,6 +16,8 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Named tuples now work correctly with vars().
|
||||
|
||||
- sys.setcheckinterval() now updates the current ticker count as well as updating
|
||||
the check interval, so if the user decreases the check interval, the ticker
|
||||
doesn't have to wind down to zero from the old starting point before the new
|
||||
|
|
Loading…
Reference in New Issue