Fu Fundamentals of Pr Programming (Py Python)
Object-Oriented Programming
Ali Taheri Sharif University of Technology
Spring 2019
Object-Oriented Programming Ali Taheri Sharif University of - - PowerPoint PPT Presentation
Fu Fundamentals of Pr Programming (Py Python) Object-Oriented Programming Ali Taheri Sharif University of Technology Spring 2019 Outline 1. Python Data Types 8. Composition 2. Classes and Objects 9. Mutability 3. Defining Classes
Spring 2019
2
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
3
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
4
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
animal = "cow" fruit = "apple"
5
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
6
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
7
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
8
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
p = Point() q = Point() p.x = 3 q.x = p.y + 5 q.y = p.x * q.x print(p.x, p.y, q.x, q.y)
9
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
10
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
11
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
class Point: def __init__(self, x=0, y=0): self.x = x self.y = y def distance_from_origin(self): return ((self.x**2) + (self.y**2)) ** 0.5 def distance(self, other): dx = self.x - other.x dy = self.y - other.y return (dx**2 + dx**2) ** 0.5 p = Point(2, 6) q = Point(-1, 4) d = p.distance(q) print(d)
12
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
Operator Method Description
+ __add__(self, other) Addition
Subtraction * __mul__(self, other) Multiplication / __truediv__(self, other) Division < __lt__(self, other) Less than <= __le__(self, other) Less that or equal > __gt__(self, other) Greater than >= __ge__(self, other) Greater than or equal == __eq__(self, other) Equal to != __ne__(self, other) Not equal to
13
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
Operator Method Description
[index] __getitem__(self, index) Index operator in __contains__(self, value) Check membership len __len__(self) The number of elements str __str__(self) The string representation
14
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
class Point: def __init__(self, x=0, y=0): self.x = x self.y = y def __str__(self): return '(%d,%d)' % (self.x, self.y) def __getitem__(self, index): if index == 0: return self.x elif index == 1: return self.y else: raise IndexError('Point index out of range.') >>> p = Point(2,3) >>> print(p) (2,3) >>> print(p[1]) 3
15
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
16
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
17
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
custom method
18
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
>>> p = Point(2,3) >>> q = Point(2,3) >>> p == q False
19
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
>>> p = Point(2,3) >>> q = Point(2,3) >>> p == q True class Point: def __init__(self, x=0, y=0): self.x = x self.y = y def __eq__(self, other): return (self.x == other.x and self.y == other.y)
20
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
>>> p = Point(2,3) >>> q = p >>> p is q True
21
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
>>> p = Point(2,3) >>> q = p >>> q.x = 5 >>> print(p) (5,3)
they are immutable
22
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
23
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
class Rectangle: """ A class to manufacture rectangle objects """ def __init__(self, corner, w, h): self.corner = corner self.width = w self.height = h def __eq__(self, other): return (self.corner == other.corner and self.width == other.width and self.height == other.height)
24
ALI TAHERI - FUNDAMENTALS OF PROGRAMMING [PYTHON] Spring 2019
>>> import copy >>> r = Rectangle(Point(1,4), 7, 2) >>> s = copy.copy(r) >>> r == s True >>> s.corner.x = 5 >>> r == s True >>> t = copy.deepcopy(r) >>> r == t True >>> t.corner.x = 6 >>> r == t False