In [5]:
class Time():
def time_to_int(self):
return self.hour * 3600 + self.minute * 60 + self.second
In [6]:
time = Time()
time.second = 30
time.minute = 45
time.hour = 10
In [7]:
time.time_to_int()
Out[7]:
In [8]:
class Point():
def __init__(self, x=0, y=0):
self.x = x
self.y = y
In [9]:
p = Point(23)
In [11]:
print p.x, p.y
In [27]:
class Point():
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return '({}, {})'.format(self.x, self.y)
In [28]:
p = Point(23, 46)
In [30]:
print(p)
In [35]:
class Point():
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return '({}, {})'.format(self.x, self.y)
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y)
In [36]:
p1 = Point(23, 46)
p2 = Point(1, 2)
print(p1 + p2)
In [40]:
class Point():
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return '({}, {})'.format(self.x, self.y)
def __add__(self, other):
if isinstance(other, Point):
return self.add_point(other)
elif isinstance(other, tuple):
return self.add_tuple(other)
def add_point(self, other):
return Point(self.x + other.x, self.y + other.y)
def add_tuple(self, in_tuple):
return Point(self.x + in_tuple[0], self.y + in_tuple[1])
def __radd__(self, other):
return self.__add__(other)
In [45]:
p1 = Point(23, 46)
p2 = Point(1, 2)
print(p1 + p2)
In [47]:
p1 = Point(23, 46)
tup = (10, 20)
print(p1 + tup)
In [48]:
p1 = Point(23, 46)
tup = (10, 20)
print(tup + p1)
In [50]:
"""
Code example from Think Python, by Allen B. Downey.
Available from http://thinkpython.com
Copyright 2012 Allen B. Downey.
Distributed under the GNU General Public License at gnu.org/licenses/gpl.html.
"""
class Time(object):
"""Represents the time of day.
attributes: hour, minute, second
"""
def __init__(self, hour=0, minute=0, second=0):
self.hour = hour
self.minute = minute
self.second = second
def __str__(self):
return '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)
def print_time(self):
print str(self)
def time_to_int(self):
"""Computes the number of seconds since midnight."""
minutes = self.hour * 60 + self.minute
seconds = minutes * 60 + self.second
return seconds
def is_after(self, other):
"""Returns True if t1 is after t2; false otherwise."""
return self.time_to_int() > other.time_to_int()
def __add__(self, other):
"""Adds two Time objects or a Time object and a number.
other: Time object or number of seconds
"""
if isinstance(other, Time):
return self.add_time(other)
else:
return self.increment(other)
def __radd__(self, other):
"""Adds two Time objects or a Time object and a number."""
return self.__add__(other)
def add_time(self, other):
"""Adds two time objects."""
assert self.is_valid() and other.is_valid()
seconds = self.time_to_int() + other.time_to_int()
return int_to_time(seconds)
def increment(self, seconds):
"""Returns a new Time that is the sum of this time and seconds."""
seconds += self.time_to_int()
return int_to_time(seconds)
def is_valid(self):
"""Checks whether a Time object satisfies the invariants."""
if self.hour < 0 or self.minute < 0 or self.second < 0:
return False
if self.minute >= 60 or self.second >= 60:
return False
return True
def int_to_time(seconds):
"""Makes a new Time object.
seconds: int seconds since midnight.
"""
minutes, second = divmod(seconds, 60)
hour, minute = divmod(minutes, 60)
time = Time(hour, minute, second)
return time
def main():
start = Time(9, 45, 00)
start.print_time()
end = start.increment(1337)
end.print_time()
print 'Is end after start?',
print end.is_after(start)
print 'Using __str__'
print start, end
start = Time(9, 45)
duration = Time(1, 35)
print start + duration
print start + 1337
print 1337 + start
print 'Example of polymorphism'
t1 = Time(7, 43)
t2 = Time(7, 41)
t3 = Time(7, 37)
total = sum([t1, t2, t3])
print total
if __name__ == '__main__':
main()
In [15]:
"""
Code example from Think Python, by Allen B. Downey.
Available from http://thinkpython.com
Copyright 2012 Allen B. Downey.
Distributed under the GNU General Public License at gnu.org/licenses/gpl.html.
"""
class Time(object):
"""Represents the time of day.
attributes: hour, minute, second
"""
def __init__(self, hour=0, minute=0, second=0):
self.second = hour * 3600 + minute * 60 + second
def __str__(self):
minutes, second = divmod(self.second, 60)
hour, minute = divmod(minutes, 60)
return '{:02d}:{:02d}:{:02d}'.format(hour, minute, second)
def print_time(self):
print str(self)
def time_to_int(self):
"""Computes the number of seconds since midnight."""
return self.second
def is_after(self, other):
"""Returns True if t1 is after t2; false otherwise."""
return self.second > other.second
def __add__(self, other):
"""Adds two Time objects or a Time object and a number.
other: Time object or number of seconds
"""
if isinstance(other, Time):
return self.add_time(other)
else:
return self.increment(other)
def __radd__(self, other):
"""Adds two Time objects or a Time object and a number."""
return self.__add__(other)
def add_time(self, other):
"""Adds two time objects."""
assert self.is_valid() and other.is_valid()
seconds = self.second + other.second
return int_to_time(seconds)
def increment(self, seconds):
"""Returns a new Time that is the sum of this time and seconds."""
seconds += self.second
return int_to_time(seconds)
def is_valid(self):
"""Checks whether a Time object satisfies the invariants."""
return self.second > 0
def int_to_time(seconds):
"""Makes a new Time object.
seconds: int seconds since midnight.
"""
return Time(0, 0, seconds)
def main():
start = Time(9, 45, 00)
start.print_time()
end = start.increment(1337)
end.print_time()
print 'Is end after start?',
print end.is_after(start)
print 'Using __str__'
print start, end
start = Time(9, 45)
duration = Time(1, 35)
print start + duration
print start + 1337
print 1337 + start
print 'Example of polymorphism'
t1 = Time(7, 43)
t2 = Time(7, 41)
t3 = Time(7, 37)
total = sum([t1, t2, t3])
print total
if __name__ == '__main__':
main()
In [1]:
class Kangaroo(object):
"""a Kangaroo is a marsupial"""
def __init__(self, contents=None):
"""initialize the pouch contents; the default value is
an empty list"""
self.pouch_contents = contents or []
def __str__(self):
"""return a string representaion of this Kangaroo and
the contents of the pouch, with one item per line"""
t = [ object.__str__(self) + ' with pouch contents:' ]
for obj in self.pouch_contents:
s = ' ' + object.__str__(obj)
t.append(s)
return '\n'.join(t)
def put_in_pouch(self, item):
"""add a new item to the pouch contents"""
self.pouch_contents.append(item)
kanga = Kangaroo()
roo = Kangaroo()
kanga.put_in_pouch('wallet')
kanga.put_in_pouch('car keys')
kanga.put_in_pouch(roo)
print kanga
In [2]:
print roo
In [3]:
roo.pouch_contents
Out[3]: