Python: Object Oriented
Programming - 1
Objects
• Python supports different type of data
– 125 (int), 24.04 (float), “Hello” (string)
– [3,7,8,10] (list)
– {“India”:”New Delhi”, “Japan”:”Tokyo”}
• Each of above is an object
• Every object has a type, internal data
representation and procedures for
interaction.
• An object is an instance
– 125 is an instance of int, Hello is an instance of
string
Objects
• In Pyhton everything is an object
• Can create an object
• Can manipulate objects
• Can destroy objects
explicitly using del or just “forget” about them python
system will reclaim destroyed or inaccessible objects
–called “garbage collection”
Objects
• objects are a data abstraction that capture:
(1) an internal representation
- through data attributes
(2) an interface for interacting with object
- through methods (procedures/functions)
- defines behaviors but hides implementation
Example: List
• lists are internally represented as linked list
• [1,2,3,4]:
internal representation should be private
• manipulation of lists
– L[i], L[i:j], +
– len(), min(), max(), del(L[i])
– L.append(), L.extend(), L.remove(), L.reverse()…
Classes
• Classes make it easy to reuse code
• There is a distinction between creating a
class and using an instance of the class
• creating the class involves
defining the class name
defining class attributes
for example, someone wrote code to
implement a list class
Classes
Classes
• defining a class involves
class Coordinate (object):
definition name of parent
of class class class
# define attributes here
• use a special method __init__ to initialize
some data attributes
Classes
• defining a class involves
class Coordinate (object):
def __init__(self, x, y):
self.x = x
self.y = y
• creating an instance
– c = Coordinate(3,4)
– origin=Coordinate(0,0)
Classes: Methods
Classes: Methods
Classes: Methods
Equivalent
Classes: Methods
• defining your own print method
class Coordinate (object):
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return “<“+str(self.x)+”,”+str(self.y)+”>”
c=Coordinate(3,4)
print(c) à <3,4>
Example: Fraction
Example: Fraction
• fraction (rational number)
class Fraction (object):
def __init__(self, n, d):
self.num = n
self.denom = d
def __str__(self):
return str(self.num)+”/”+str(self.denom)
Example: Fraction
• fraction (rational number)
add two rational numbers:
def __add__(self, other):
num = self.num*other.denom +
self.denom*other.num
denom = self.denom*other.denom
return Fraction(num, denom)
Example: Fraction
• fraction (rational number)
subtract two rational numbers:
def __subtract__(self, other):
num = self.num*other.denom -
self.denom*other.num
denom = self.denom*other.denom
return Fraction(num, denom)
Example: Fraction
• fraction (rational number)
multiply two rational numbers:
def multiply(self, other):
num = self.num*other.num
denom = self.denom*other.denom
return Fraction(num, denom)
Example: Fraction
• fraction (rational number)
divide two rational numbers:
def divide(self, other):
num = self.num*other.denom
denom = self.denom*other.num
return Fraction(num, denom)
Example: Fraction
• fraction (rational number)
def __float__(self):
return self.num/self.denom
def inverse(self):
return self.denom/self.num
def reduce(self):
….