mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ################################################################################
 | |
| ### Simple tests
 | |
| ################################################################################
 | |
| 
 | |
| # verify that instances can be pickled
 | |
| from collections import namedtuple
 | |
| from pickle import loads, dumps
 | |
| Point = namedtuple('Point', 'x, y', True)
 | |
| p = Point(x=10, y=20)
 | |
| assert p == loads(dumps(p))
 | |
| 
 | |
| # test and demonstrate ability to override methods
 | |
| class Point(namedtuple('Point', 'x y')):
 | |
|     __slots__ = ()
 | |
|     @property
 | |
|     def hypot(self):
 | |
|         return (self.x ** 2 + self.y ** 2) ** 0.5
 | |
|     def __str__(self):
 | |
|         return 'Point: x=%6.3f  y=%6.3f  hypot=%6.3f' % (self.x, self.y, self.hypot)
 | |
| 
 | |
| for p in Point(3, 4), Point(14, 5/7.):
 | |
|     print (p)
 | |
| 
 | |
| class Point(namedtuple('Point', 'x y')):
 | |
|     'Point class with optimized _make() and _replace() without error-checking'
 | |
|     __slots__ = ()
 | |
|     _make = classmethod(tuple.__new__)
 | |
|     def _replace(self, _map=map, **kwds):
 | |
|         return self._make(_map(kwds.get, ('x', 'y'), self))
 | |
| 
 | |
| print(Point(11, 22)._replace(x=100))
 | |
| 
 | |
| Point3D = namedtuple('Point3D', Point._fields + ('z',))
 | |
| print(Point3D.__doc__)
 | |
| 
 | |
| import doctest, collections
 | |
| TestResults = namedtuple('TestResults', 'failed attempted')
 | |
| print(TestResults(*doctest.testmod(collections)))
 | 
