diff options
author | Raymond Hettinger <python@rcn.com> | 2012-06-10 01:46:45 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2012-06-10 01:46:45 (GMT) |
commit | 80ed4d47746ba48109c7c0f49877102521af93c8 (patch) | |
tree | 92b1b10a1e706c967d3a073cc58741bce3e506cf /Lib/collections/__main__.py | |
parent | 75963643b178f9d72d3b6bb02d136d67c9cc6d3e (diff) | |
download | cpython-80ed4d47746ba48109c7c0f49877102521af93c8.zip cpython-80ed4d47746ba48109c7c0f49877102521af93c8.tar.gz cpython-80ed4d47746ba48109c7c0f49877102521af93c8.tar.bz2 |
Minor reformatting (wrap fat lines, etc.) and create an __main__ file
Diffstat (limited to 'Lib/collections/__main__.py')
-rw-r--r-- | Lib/collections/__main__.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Lib/collections/__main__.py b/Lib/collections/__main__.py new file mode 100644 index 0000000..763e38e --- /dev/null +++ b/Lib/collections/__main__.py @@ -0,0 +1,38 @@ +################################################################################ +### 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))) |