Skip to content

Commit 468a50d

Browse files
committed
Adding Point2_soln
1 parent c6694c2 commit 468a50d

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

code/Point2_soln.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"""This module contains a code example related to
2+
3+
Think Python, 2nd Edition
4+
by Allen Downey
5+
http://thinkpython2.com
6+
7+
Copyright 2015 Allen Downey
8+
9+
License: http://creativecommons.org/licenses/by/4.0/
10+
"""
11+
12+
from __future__ import print_function, division
13+
14+
15+
class Point(object):
16+
"""Represents a point in 2-D space.
17+
18+
attributes: x, y
19+
"""
20+
def __init__(self, x=0, y=0):
21+
self.x = x
22+
self.y = y
23+
24+
def __str__(self):
25+
return '(%g, %g)' % (self.x, self.y)
26+
27+
def __add__(self, other):
28+
"""Adds a Point or tuple."""
29+
if isinstance(other, Point):
30+
return self.add_point(other)
31+
elif isinstance(other, tuple):
32+
return self.add_tuple(other)
33+
else:
34+
msg = "Point doesn't know how to add type " + type(other)
35+
raise TypeError(msg)
36+
37+
def add_point(self, other):
38+
"""Adds a point."""
39+
return Point(self.x + other.x, self.y + other.y)
40+
41+
def add_tuple(self, other):
42+
"""Adds a tuple."""
43+
return Point(self.x + other[0], self.y + other[1])
44+
45+
46+
47+
def main():
48+
p1 = Point(1, 2)
49+
p2 = Point(3, 4)
50+
print(p1)
51+
print(p2)
52+
print(p1 + p2)
53+
print(p1 + (3, 4))
54+
55+
if __name__ == '__main__':
56+
main()
57+

0 commit comments

Comments
 (0)