annotate Demo/classes/Vec.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents 3355356f1c74
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
1 class Vec:
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
2 """ A simple vector class
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
3
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
4 Instances of the Vec class can be constructed from numbers
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
6 >>> a = Vec(1, 2, 3)
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
7 >>> b = Vec(3, 2, 1)
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
8
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
9 added
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
10 >>> a + b
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
11 Vec(4, 4, 4)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
13 subtracted
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
14 >>> a - b
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
15 Vec(-2, 0, 2)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
17 and multiplied by a scalar on the left
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
18 >>> 3.0 * a
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
19 Vec(3.0, 6.0, 9.0)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
21 or on the right
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
22 >>> a * 3.0
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
23 Vec(3.0, 6.0, 9.0)
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
24 """
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
25 def __init__(self, *v):
30407
b8737a31050c SF patch #803449: modernize demo scripts
Raymond Hettinger <python@rcn.com>
parents: 28788
diff changeset
26 self.v = list(v)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
28 @classmethod
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
29 def fromlist(cls, v):
30407
b8737a31050c SF patch #803449: modernize demo scripts
Raymond Hettinger <python@rcn.com>
parents: 28788
diff changeset
30 if not isinstance(v, list):
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
31 raise TypeError
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
32 inst = cls()
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
33 inst.v = v
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
34 return inst
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
36 def __repr__(self):
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
37 args = ', '.join(repr(x) for x in self.v)
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
38 return 'Vec({0})'.format(args)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
40 def __len__(self):
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
41 return len(self.v)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
43 def __getitem__(self, i):
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
44 return self.v[i]
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45
30407
b8737a31050c SF patch #803449: modernize demo scripts
Raymond Hettinger <python@rcn.com>
parents: 28788
diff changeset
46 def __add__(self, other):
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
47 # Element-wise addition
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
48 v = [x + y for x, y in zip(self.v, other.v)]
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
49 return Vec.fromlist(v)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50
30407
b8737a31050c SF patch #803449: modernize demo scripts
Raymond Hettinger <python@rcn.com>
parents: 28788
diff changeset
51 def __sub__(self, other):
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
52 # Element-wise subtraction
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
53 v = [x - y for x, y in zip(self.v, other.v)]
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
54 return Vec.fromlist(v)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55
28788
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
56 def __mul__(self, scalar):
558689b6d7f0 Run these demo scripts through reindent.py to give them 4-space indents. I've verified that their output is unchanged.
Andrew M. Kuchling <amk@amk.ca>
parents: 1427
diff changeset
57 # Multiply by scalar
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
58 v = [x * scalar for x in self.v]
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
59 return Vec.fromlist(v)
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
61 __rmul__ = __mul__
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 def test():
63238
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
65 import doctest
3355356f1c74 Merged revisions 82594,82599 via svnmerge from
Georg Brandl <georg@python.org>
parents: 30407
diff changeset
66 doctest.testmod()
945
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67
465b9841770e Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 test()