SlideShare a Scribd company logo
Unit 8
Classes and Objects; Inheritance
Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work.
Except where otherwise noted, this work is licensed under:
http://creativecommons.org/licenses/by-nc-sa/3.0
2
OOP, Defining a Class
• Python was built as a procedural language
– OOP exists and works fine, but feels a bit more "tacked on"
– Java probably does classes better than Python (gasp)
• Declaring a class:
class name:
statements
3
Fields
name = value
– Example:
class Point:
x = 0
y = 0
# main
p1 = Point()
p1.x = 2
p1.y = -5
– can be declared directly inside class (as shown here)
or in constructors (more common)
– Python does not really have encapsulation or private fields
• relies on caller to "be nice" and not mess with objects' contents
point.py
1
2
3
class Point:
x = 0
y = 0
4
Using a Class
import class
– client programs must import the classes they use
point_main.py
1
2
3
4
5
6
7
8
9
10
from Point import *
# main
p1 = Point()
p1.x = 7
p1.y = -3
...
# Python objects are dynamic (can add fields any time!)
p1.name = "Tyler Durden"
5
Object Methods
def name(self, parameter, ..., parameter):
statements
– self must be the first parameter to any object method
• represents the "implicit parameter" (this in Java)
– must access the object's fields through the self reference
class Point:
def translate(self, dx, dy):
self.x += dx
self.y += dy
...
6
"Implicit" Parameter (self)
• Java: this, implicit
public void translate(int dx, int dy) {
x += dx; // this.x += dx;
y += dy; // this.y += dy;
}
• Python: self, explicit
def translate(self, dx, dy):
self.x += dx
self.y += dy
– Exercise: Write distance, set_location, and
distance_from_origin methods.
7
Exercise Answer
point.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from math import *
class Point:
x = 0
y = 0
def set_location(self, x, y):
self.x = x
self.y = y
def distance_from_origin(self):
return sqrt(self.x * self.x + self.y * self.y)
def distance(self, other):
dx = self.x - other.x
dy = self.y - other.y
return sqrt(dx * dx + dy * dy)
8
Calling Methods
• A client can call the methods of an object in two ways:
– (the value of self can be an implicit or explicit parameter)
1) object.method(parameters)
or
2) Class.method(object, parameters)
• Example:
p = Point(3, -4)
p.translate(1, 5)
Point.translate(p, 1, 5)
9
Constructors
def __init__(self, parameter, ..., parameter):
statements
– a constructor is a special method with the name __init__
– Example:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
...
• How would we make it possible to construct a
Point() with no parameters to get (0, 0)?
10
toString and __str__
def __str__(self):
return string
– equivalent to Java's toString (converts object to a string)
– invoked automatically when str or print is called
Exercise: Write a __str__ method for Point objects that
returns strings like "(3, -14)"
def __str__(self):
return "(" + str(self.x) + ", " + str(self.y) + ")"
11
Complete Point Class
point.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from math import *
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def distance_from_origin(self):
return sqrt(self.x * self.x + self.y * self.y)
def distance(self, other):
dx = self.x - other.x
dy = self.y - other.y
return sqrt(dx * dx + dy * dy)
def translate(self, dx, dy):
self.x += dx
self.y += dy
def __str__(self):
return "(" + str(self.x) + ", " + str(self.y) + ")"
12
Operator Overloading
• operator overloading: You can define functions so that
Python's built-in operators can be used with your class.
• See also: http://docs.python.org/ref/customization.html
Operator Class Method
- __neg__(self, other)
+ __pos__(self, other)
* __mul__(self, other)
/ __truediv__(self, other)
Unary Operators
- __neg__(self)
+ __pos__(self)
Operator Class Method
== __eq__(self, other)
!= __ne__(self, other)
< __lt__(self, other)
> __gt__(self, other)
<= __le__(self, other)
>= __ge__(self, other)
13
Exercise
• Exercise: Write a Fraction class to represent rational
numbers like 1/2 and -3/8.
• Fractions should always be stored in reduced form; for
example, store 4/12 as 1/3 and 6/-9 as -2/3.
– Hint: A GCD (greatest common divisor) function may help.
• Define add and multiply methods that accept another
Fraction as a parameter and modify the existing
Fraction by adding/multiplying it by that parameter.
• Define +, *, ==, and < operators.
14
Generating Exceptions
raise ExceptionType("message")
– useful when the client uses your object improperly
– types: ArithmeticError, AssertionError, IndexError,
NameError, SyntaxError, TypeError, ValueError
– Example:
class BankAccount:
...
def deposit(self, amount):
if amount < 0:
raise ValueError("negative amount")
...
15
Inheritance
class name(superclass):
statements
– Example:
class Point3D(Point): # Point3D extends Point
z = 0
...
• Python also supports multiple inheritance
class name(superclass, ..., superclass):
statements
(if > 1 superclass has the same field/method, conflicts are resolved in left-to-right order)
16
Calling Superclass Methods
• methods: class.method(object, parameters)
• constructors: class.__init__(parameters)
class Point3D(Point):
z = 0
def __init__(self, x, y, z):
Point.__init__(self, x, y)
self.z = z
def translate(self, dx, dy, dz):
Point.translate(self, dx, dy)
self.z += dz

More Related Content

PPTX
Python 2. classes- cruciql for students objects1.pptx
PDF
1_7a6f85d03f132dcd9d7592bc4643be1c_MIT6_0001F16_Lec8.pdf
PPTX
Python_Unit_2 OOPS.pptx
PPTX
Object Oriented Programming.pptx
PPTX
Class, object and inheritance in python
PPTX
Creating Objects in Python
PPT
Lecture topic - Python class lecture.ppt
PPT
Lecture on Python class -lecture123456.ppt
Python 2. classes- cruciql for students objects1.pptx
1_7a6f85d03f132dcd9d7592bc4643be1c_MIT6_0001F16_Lec8.pdf
Python_Unit_2 OOPS.pptx
Object Oriented Programming.pptx
Class, object and inheritance in python
Creating Objects in Python
Lecture topic - Python class lecture.ppt
Lecture on Python class -lecture123456.ppt

Similar to OOC in python.ppt (20)

PPTX
VTU Python Module 5 , Class and Objects and Debugging
PPTX
Module 4.pptx
PPTX
object oriented porgramming using Java programming
PPTX
Python – Object Oriented Programming
PPTX
UNIT 3 PY.pptx - OOPS CONCEPTS IN PYTHON
PDF
Module IV_updated(old).pdf
PPT
07slide.ppt
PPTX
Python OOPs
PDF
Lecture1
PDF
singh singhsinghsinghsinghsinghsinghsinghsinghsingh.pdf
PPT
Python3
PPTX
Python advance
PDF
Python unit 3 m.sc cs
PPTX
2_Classes.pptxjdhfhdfohfshfklsfskkfsdklsdk
PPTX
Python: Migrating from Procedural to Object-Oriented Programming
PPTX
Unit – V Object Oriented Programming in Python.pptx
PPTX
OOPS-PYTHON.pptx OOPS IN PYTHON APPLIED PROGRAMMING
PPTX
PYTHON-COURSE-PROGRAMMING-UNIT-IV--.pptx
VTU Python Module 5 , Class and Objects and Debugging
Module 4.pptx
object oriented porgramming using Java programming
Python – Object Oriented Programming
UNIT 3 PY.pptx - OOPS CONCEPTS IN PYTHON
Module IV_updated(old).pdf
07slide.ppt
Python OOPs
Lecture1
singh singhsinghsinghsinghsinghsinghsinghsinghsingh.pdf
Python3
Python advance
Python unit 3 m.sc cs
2_Classes.pptxjdhfhdfohfshfklsfskkfsdklsdk
Python: Migrating from Procedural to Object-Oriented Programming
Unit – V Object Oriented Programming in Python.pptx
OOPS-PYTHON.pptx OOPS IN PYTHON APPLIED PROGRAMMING
PYTHON-COURSE-PROGRAMMING-UNIT-IV--.pptx
Ad

Recently uploaded (20)

PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Cloud computing and distributed systems.
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
Advanced methodologies resolving dimensionality complications for autism neur...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
cuic standard and advanced reporting.pdf
sap open course for s4hana steps from ECC to s4
MYSQL Presentation for SQL database connectivity
Dropbox Q2 2025 Financial Results & Investor Presentation
Cloud computing and distributed systems.
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Unlocking AI with Model Context Protocol (MCP)
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
Understanding_Digital_Forensics_Presentation.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Machine learning based COVID-19 study performance prediction
Spectral efficient network and resource selection model in 5G networks
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Review of recent advances in non-invasive hemoglobin estimation
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
The AUB Centre for AI in Media Proposal.docx
Ad

OOC in python.ppt

  • 1. Unit 8 Classes and Objects; Inheritance Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0
  • 2. 2 OOP, Defining a Class • Python was built as a procedural language – OOP exists and works fine, but feels a bit more "tacked on" – Java probably does classes better than Python (gasp) • Declaring a class: class name: statements
  • 3. 3 Fields name = value – Example: class Point: x = 0 y = 0 # main p1 = Point() p1.x = 2 p1.y = -5 – can be declared directly inside class (as shown here) or in constructors (more common) – Python does not really have encapsulation or private fields • relies on caller to "be nice" and not mess with objects' contents point.py 1 2 3 class Point: x = 0 y = 0
  • 4. 4 Using a Class import class – client programs must import the classes they use point_main.py 1 2 3 4 5 6 7 8 9 10 from Point import * # main p1 = Point() p1.x = 7 p1.y = -3 ... # Python objects are dynamic (can add fields any time!) p1.name = "Tyler Durden"
  • 5. 5 Object Methods def name(self, parameter, ..., parameter): statements – self must be the first parameter to any object method • represents the "implicit parameter" (this in Java) – must access the object's fields through the self reference class Point: def translate(self, dx, dy): self.x += dx self.y += dy ...
  • 6. 6 "Implicit" Parameter (self) • Java: this, implicit public void translate(int dx, int dy) { x += dx; // this.x += dx; y += dy; // this.y += dy; } • Python: self, explicit def translate(self, dx, dy): self.x += dx self.y += dy – Exercise: Write distance, set_location, and distance_from_origin methods.
  • 7. 7 Exercise Answer point.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from math import * class Point: x = 0 y = 0 def set_location(self, x, y): self.x = x self.y = y def distance_from_origin(self): return sqrt(self.x * self.x + self.y * self.y) def distance(self, other): dx = self.x - other.x dy = self.y - other.y return sqrt(dx * dx + dy * dy)
  • 8. 8 Calling Methods • A client can call the methods of an object in two ways: – (the value of self can be an implicit or explicit parameter) 1) object.method(parameters) or 2) Class.method(object, parameters) • Example: p = Point(3, -4) p.translate(1, 5) Point.translate(p, 1, 5)
  • 9. 9 Constructors def __init__(self, parameter, ..., parameter): statements – a constructor is a special method with the name __init__ – Example: class Point: def __init__(self, x, y): self.x = x self.y = y ... • How would we make it possible to construct a Point() with no parameters to get (0, 0)?
  • 10. 10 toString and __str__ def __str__(self): return string – equivalent to Java's toString (converts object to a string) – invoked automatically when str or print is called Exercise: Write a __str__ method for Point objects that returns strings like "(3, -14)" def __str__(self): return "(" + str(self.x) + ", " + str(self.y) + ")"
  • 11. 11 Complete Point Class point.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from math import * class Point: def __init__(self, x, y): self.x = x self.y = y def distance_from_origin(self): return sqrt(self.x * self.x + self.y * self.y) def distance(self, other): dx = self.x - other.x dy = self.y - other.y return sqrt(dx * dx + dy * dy) def translate(self, dx, dy): self.x += dx self.y += dy def __str__(self): return "(" + str(self.x) + ", " + str(self.y) + ")"
  • 12. 12 Operator Overloading • operator overloading: You can define functions so that Python's built-in operators can be used with your class. • See also: http://docs.python.org/ref/customization.html Operator Class Method - __neg__(self, other) + __pos__(self, other) * __mul__(self, other) / __truediv__(self, other) Unary Operators - __neg__(self) + __pos__(self) Operator Class Method == __eq__(self, other) != __ne__(self, other) < __lt__(self, other) > __gt__(self, other) <= __le__(self, other) >= __ge__(self, other)
  • 13. 13 Exercise • Exercise: Write a Fraction class to represent rational numbers like 1/2 and -3/8. • Fractions should always be stored in reduced form; for example, store 4/12 as 1/3 and 6/-9 as -2/3. – Hint: A GCD (greatest common divisor) function may help. • Define add and multiply methods that accept another Fraction as a parameter and modify the existing Fraction by adding/multiplying it by that parameter. • Define +, *, ==, and < operators.
  • 14. 14 Generating Exceptions raise ExceptionType("message") – useful when the client uses your object improperly – types: ArithmeticError, AssertionError, IndexError, NameError, SyntaxError, TypeError, ValueError – Example: class BankAccount: ... def deposit(self, amount): if amount < 0: raise ValueError("negative amount") ...
  • 15. 15 Inheritance class name(superclass): statements – Example: class Point3D(Point): # Point3D extends Point z = 0 ... • Python also supports multiple inheritance class name(superclass, ..., superclass): statements (if > 1 superclass has the same field/method, conflicts are resolved in left-to-right order)
  • 16. 16 Calling Superclass Methods • methods: class.method(object, parameters) • constructors: class.__init__(parameters) class Point3D(Point): z = 0 def __init__(self, x, y, z): Point.__init__(self, x, y) self.z = z def translate(self, dx, dy, dz): Point.translate(self, dx, dy) self.z += dz

Editor's Notes