Objects in Python
Damian Gordon
Declaring a Class
The Point Class
class MyFirstClass:
pass
# END Class
The Point Class
class MyFirstClass:
pass
# END Class
“move along, nothing
to see here”
The Point Class
class MyFirstClass:
pass
# END Class
class <ClassName>:
<Do stuff>
# END Class
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
>>> a = MyFirstClass()
>>> print(a)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = a
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B10>
>>> b = MyFirstClass()
>>> print(b)
<__main__.MyFirstClass object at 0x02D60B30>
The Point Class
class Point:
pass
# END Class
p1 = Point()
p2 = Point()
The Point Class
class Point:
pass
# END Class
p1 = Point()
p2 = Point()
Creating a class
The Point Class
class Point:
pass
# END Class
p1 = Point()
p2 = Point()
Creating a class
Creating objects
of that class
Adding Attributes
The Point Class
p1.x = 5
p1.y = 4
p2.x = 3
p2.y = 6
print("P1-x, P1-y is: ", p1.x, p1.y);
print("P2-x, P2-y is: ", p2.x, p2.y);
The Point Class
p1.x = 5
p1.y = 4
p2.x = 3
p2.y = 6
print("P1-x, P1-y is: ", p1.x, p1.y);
print("P2-x, P2-y is: ", p2.x, p2.y);
Adding Attributes:
This is all you need to
do, just declare them
Python: Object Attributes
• In Python the general form of declaring an attribute is as
follows (we call this dot notation):
OBJECT. ATTRIBUTE = VALUE
Adding Methods
The Point Class
class Point:
def reset(self):
self.x = 0
self.y = 0
# END Reset
# END Class
The Point Class
class Point:
def reset(self):
self.x = 0
self.y = 0
# END Reset
# END Class
Adding Methods:
This is all you need
The Point Class
p = Point()
p.x = 5
p.y = 4
print("P-x, P-y is: ", p.x, p.y);
p.reset()
print("P-x, P-y is: ", p.x, p.y);
The Point Class
p = Point()
p.x = 5
p.y = 4
print("P-x, P-y is: ", p.x, p.y);
p.reset()
print("P-x, P-y is: ", p.x, p.y);
5 4
The Point Class
p = Point()
p.x = 5
p.y = 4
print("P-x, P-y is: ", p.x, p.y);
p.reset()
print("P-x, P-y is: ", p.x, p.y);
5 4
0 0
Let’s try that again…
The Point Class
p = Point()
p.x = 5
p.y = 4
print("P-x, P-y is: ", p.x, p.y);
p.reset()
print("P-x, P-y is: ", p.x, p.y);
The Point Class
p = Point()
p.x = 5
p.y = 4
print("P-x, P-y is: ", p.x, p.y);
p.reset()
print("P-x, P-y is: ", p.x, p.y);
The Point Class
p = Point()
p.x = 5
p.y = 4
print("P-x, P-y is: ", p.x, p.y);
p.reset()
print("P-x, P-y is: ", p.x, p.y);
We can also say:
Point.reset(p)
Multiple Arguments
The Point Class
class Point:
def reset(self):
self.x = 0
self.y = 0
# END Reset
# END Class
The Point Class
• We can do this in a slightly different way, as follows:
The Point Class
class Point:
def move(self,a,b):
self.x = a
self.y = b
# END Move
def reset(self):
self.move(0,0)
# END Reset
# END Class
The Point Class
class Point:
def move(self,a,b):
self.x = a
self.y = b
# END Move
def reset(self):
self.move(0,0)
# END Reset
# END Class
Declare a new method
called “move” that writes
values into the object.
The Point Class
class Point:
def move(self,a,b):
self.x = a
self.y = b
# END Move
def reset(self):
self.move(0,0)
# END Reset
# END Class
Declare a new method
called “move” that writes
values into the object.
Move the values 0 and 0
into the class to reset.
Distance between two points
The Point Class
• The distance between two points is:
d
d = √(x2 – x1)2 + (y2 – y1) 2
d = √(6 – 2)2 + (5 – 2) 2
d = √(4)2 + (3)2
d = √16 + 9
d = √25
d = 5
The Point Class
• Let’s see what we have already:
The Point Class
class Point:
def move(self,a,b):
self.x = a
self.y = b
# END Move
def reset(self):
self.move(0,0)
# END Reset
# END Class
The Point Class
• Now let’s add a new method in:
The Point Class
import math
class Point:
def calc_distance(self, other_point):
return math.sqrt(
(self.x – other_point.x)**2 +
(self.y – other_point.y)**2)
# END calc_distance
# END Class d = √(x2 – x1)2 + (y2 – y1)2
The Point Class
• Now let’s add some code to make it run:
The Point Class
p1 = Point()
p2 = Point()
p1.move(2,2)
p2.move(6,5)
print("P1-x, P1-y is: ", p1.x, p1.y)
print("P2-x, P2-y is: ", p2.x, p2.y)
print("Distance from P1 to P2 is:", p1.calc_distance(p2))
p1
p2
Initialising an Object
Initialising an Object
• What if we did the following:
Initialising an Object
p1 = Point()
p1.x = 5
print("P1-x, P1-y is: ", p1.x, p1.y);
Initialising an Object
p1 = Point()
p1.x = 5
print("P1-x, P1-y is: ", p1.x, p1.y);
>>>
Traceback (most recent call last):
File "C:/Users/damian.gordon/AppData/
Local/Programs/Python/Python35-32/Point-error.py",
line 11, in <module>
print("P1-x, P1-y is: ", p1.x, p1.y);
AttributeError: 'Point' object has no attribute 'y‘
>>>
Initialising an Object
• So what can we do?
Initialising an Object
• So what can we do?
• We need to create a method that forces the programmers to
initialize the attributes of the class to some starting value, just
so that we don’t have this problem.
Initialising an Object
• So what can we do?
• We need to create a method that forces the programmers to
initialize the attributes of the class to some starting value, just
so that we don’t have this problem.
• This is called an initialization method.
Initialising an Object
• Python has a special name it uses for initialization methods.
_ _ init _ _()
class Point:
def __init__(self,x,y):
self.move(x,y)
# END Init
def move(self,a,b):
self.x = a
self.y = b
# END Move
def reset(self):
self.move(0,0)
# END Reset
# END Class
Initialising an Object
Initialising an Object
class Point:
def __init__(self,x,y):
self.move(x,y)
# END Init
def move(self,a,b):
self.x = a
self.y = b
# END Move
def reset(self):
self.move(0,0)
# END Reset
# END Class
When you create an object from
this class, you are going to have to
declare initial values for X and Y.
Initialising an Object
• So without the initialization method we could do this:
– p1 = Point()
– p2 = Point()
• but with the initialization method we have to do this:
– p1 = Point(6,5)
– p2 = Point(2,2)
Initialising an Object
• And if we forget to include the values, what happens?
Initialising an Object
• And if we forget to include the values, what happens?
Traceback (most recent call last):
File "C:/Users/damian.gordon/AppData/Local/
Programs/Python/Python35-32/Point-init.py", line
21, in <module>
p = Point()
TypeError: __init__() missing 2 required
positional arguments: 'x' and 'y'
Initialising an Object
• But if we want to be lazy we can do the following:
Initialising an Object
def __init__(self, x=0, y=0):
self.move(x,y)
# END Init
Initialising an Object
def __init__(self, x=0, y=0):
self.move(x,y)
# END Init
Initialising an Object
• And then we can do:
– p1 = Point()
– p2 = Point(2,2)
Initialising an Object
• And then we can do:
– p1 = Point()
– p2 = Point(2,2)
If we don’t supply any values, the
initialization method will set the
values to 0,0.
Initialising an Object
• And then we can do:
– p1 = Point()
– p2 = Point(2,2)
If we don’t supply any values, the
initialization method will set the
values to 0,0.
But we can also supply the values,
and the object is created with these
default values.
Documenting the Methods
Documenting the Methods
• Python is considered one of the most easy
programming languages, but nonetheless a vital part
of object-orientated programming is to explain what
each class and method does to help promote object
reuse.
Documenting the Methods
• Python supports this through the use of
docstrings.
• These are strings enclosed in either quotes(‘) or
doublequotes(“) just after the class or method
declaration.
Documenting the Methods
class Point:
“Represents a point in 2D space”
def __init__(self,x,y):
‘Initialise the position of a new point’
self.move(x,y)
# END Init
Documenting the Methods
def move(self,a,b):
‘Move the point to a new location’
self.x = a
self.y = b
# END Move
def reset(self):
‘Reset the point back to the origin’
self.move(0,0)
# END Reset
Initialising an Object
• Now run the program, and then do:
>>>
>>> help (Point)
Initialising an Object
• And you’ll get:
Help on class Point in module __main__:
class Point(builtins.object)
| Represents a point in 2D space
|
| Methods defined here:
|
| calc_distance(self, other_point)
| Get the distance between two points
|
| move(self, a, b)
| Move the point to a new location
|
| reset(self)
| Reset the point back to the origin
| ----------------------------------------------
etc.

More Related Content

PDF
Python Modules
PPTX
Multi level inheritence
PPTX
Inline function
PDF
Python programming : Inheritance and polymorphism
PPT
Python modules
PDF
Python lambda functions with filter, map & reduce function
PPTX
Python: Polymorphism
PDF
FUNCTIONS IN PYTHON, CLASS 12 COMPUTER SCIENCE
Python Modules
Multi level inheritence
Inline function
Python programming : Inheritance and polymorphism
Python modules
Python lambda functions with filter, map & reduce function
Python: Polymorphism
FUNCTIONS IN PYTHON, CLASS 12 COMPUTER SCIENCE

What's hot (20)

PDF
Class and object
PPTX
Pseudo code of stack Queue and Array
PPT
Packages in java
PPT
Files in c++ ppt
PPTX
Inheritance
PDF
Python programming : Abstract classes interfaces
PDF
The aggregate function - from sequential and parallel folds to parallel aggre...
PPTX
Ppt on this and super keyword
PPTX
Polymorphism in Python
PPTX
Python-Inheritance.pptx
PPTX
Modules in Python Programming
PDF
Computer Graphics in Java and Scala - Part 1
PPTX
Chapter 05 classes and objects
PPTX
C Programming Unit-3
PPTX
C# Strings
PDF
Control statements
PPTX
Chapter 02 functions -class xii
TXT
c++ program for Railway reservation
PPTX
polymorphism
Class and object
Pseudo code of stack Queue and Array
Packages in java
Files in c++ ppt
Inheritance
Python programming : Abstract classes interfaces
The aggregate function - from sequential and parallel folds to parallel aggre...
Ppt on this and super keyword
Polymorphism in Python
Python-Inheritance.pptx
Modules in Python Programming
Computer Graphics in Java and Scala - Part 1
Chapter 05 classes and objects
C Programming Unit-3
C# Strings
Control statements
Chapter 02 functions -class xii
c++ program for Railway reservation
polymorphism
Ad

Viewers also liked (12)

PPTX
Python: Access Control
PPTX
Python: Third-Party Libraries
PPTX
Python: The Iterator Pattern
PPTX
Python: Design Patterns
PPTX
Python: Modules and Packages
PPTX
Python: Multiple Inheritance
PPTX
Introduction to Python programming
PPTX
Object-Orientated Design
PPTX
Python: Basic Inheritance
PPTX
Python: Manager Objects
PPTX
Python: Migrating from Procedural to Object-Oriented Programming
PPTX
The Extreme Programming (XP) Model
Python: Access Control
Python: Third-Party Libraries
Python: The Iterator Pattern
Python: Design Patterns
Python: Modules and Packages
Python: Multiple Inheritance
Introduction to Python programming
Object-Orientated Design
Python: Basic Inheritance
Python: Manager Objects
Python: Migrating from Procedural to Object-Oriented Programming
The Extreme Programming (XP) Model
Ad

Similar to Creating Objects in Python (20)

PPTX
object oriented porgramming using Java programming
PDF
Module IV_updated(old).pdf
PPTX
VTU Python Module 5 , Class and Objects and Debugging
PPTX
Python 2. classes- cruciql for students objects1.pptx
PPTX
OOPS-PYTHON.pptx OOPS IN PYTHON APPLIED PROGRAMMING
PPTX
Module-5-Classes and Objects for Python Programming.pptx
PPT
OOC in python.ppt
PPT
Python - Classes and Objects, Inheritance
PPT
08-classes-objects.ppt
PPT
08-classes-objects.ppt
PDF
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
PPTX
IPP-M5-C1-Classes _ Objects python -S2.pptx
PDF
1_7a6f85d03f132dcd9d7592bc4643be1c_MIT6_0001F16_Lec8.pdf
PPTX
Module 4.pptx
PPTX
Python – Object Oriented Programming
PPTX
Lecture 6 python oop (ewurc)
PPTX
Class, object and inheritance in python
PDF
اسلاید جلسه ۹ کلاس پایتون برای هکر های قانونی
PPT
Lecture topic - Python class lecture.ppt
PPT
Lecture on Python class -lecture123456.ppt
object oriented porgramming using Java programming
Module IV_updated(old).pdf
VTU Python Module 5 , Class and Objects and Debugging
Python 2. classes- cruciql for students objects1.pptx
OOPS-PYTHON.pptx OOPS IN PYTHON APPLIED PROGRAMMING
Module-5-Classes and Objects for Python Programming.pptx
OOC in python.ppt
Python - Classes and Objects, Inheritance
08-classes-objects.ppt
08-classes-objects.ppt
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
IPP-M5-C1-Classes _ Objects python -S2.pptx
1_7a6f85d03f132dcd9d7592bc4643be1c_MIT6_0001F16_Lec8.pdf
Module 4.pptx
Python – Object Oriented Programming
Lecture 6 python oop (ewurc)
Class, object and inheritance in python
اسلاید جلسه ۹ کلاس پایتون برای هکر های قانونی
Lecture topic - Python class lecture.ppt
Lecture on Python class -lecture123456.ppt

More from Damian T. Gordon (20)

PPTX
Introduction to Prompts and Prompt Engineering
PPTX
Introduction to Vibe Coding and Vibe Engineering
PPTX
TRIZ: Theory of Inventive Problem Solving
PPTX
Some Ethical Considerations of AI and GenAI
PPTX
Some Common Errors that Generative AI Produces
PPTX
The Use of Data and Datasets in Data Science
PPTX
A History of Different Versions of Microsoft Windows
PPTX
Writing an Abstract: A Question-based Approach
PPTX
Using GenAI for Universal Design for Learning
DOC
A CheckSheet for Inclusive Software Design
PPTX
A History of Versions of the Apple MacOS
PPTX
68 Ways that Data Science and AI can help address the UN Sustainability Goals
PPTX
Copyright and Creative Commons Considerations
PPTX
Exam Preparation: Some Ideas and Suggestions
PPTX
Studying and Notetaking: Some Suggestions
PPTX
The Growth Mindset: Explanations and Activities
PPTX
Hyperparameter Tuning in Neural Networks
PPTX
Early 20th Century Modern Art: Movements and Artists
PPTX
An Introduction to Generative Artificial Intelligence
PPTX
An Introduction to Green Computing with a fun quiz.
Introduction to Prompts and Prompt Engineering
Introduction to Vibe Coding and Vibe Engineering
TRIZ: Theory of Inventive Problem Solving
Some Ethical Considerations of AI and GenAI
Some Common Errors that Generative AI Produces
The Use of Data and Datasets in Data Science
A History of Different Versions of Microsoft Windows
Writing an Abstract: A Question-based Approach
Using GenAI for Universal Design for Learning
A CheckSheet for Inclusive Software Design
A History of Versions of the Apple MacOS
68 Ways that Data Science and AI can help address the UN Sustainability Goals
Copyright and Creative Commons Considerations
Exam Preparation: Some Ideas and Suggestions
Studying and Notetaking: Some Suggestions
The Growth Mindset: Explanations and Activities
Hyperparameter Tuning in Neural Networks
Early 20th Century Modern Art: Movements and Artists
An Introduction to Generative Artificial Intelligence
An Introduction to Green Computing with a fun quiz.

Recently uploaded (20)

PDF
Myanmar Dental Journal, The Journal of the Myanmar Dental Association (2013).pdf
PDF
LIFE & LIVING TRILOGY - PART (3) REALITY & MYSTERY.pdf
PDF
Skin Care and Cosmetic Ingredients Dictionary ( PDFDrive ).pdf
PDF
International_Financial_Reporting_Standa.pdf
PDF
fundamentals-of-heat-and-mass-transfer-6th-edition_incropera.pdf
PDF
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
PPTX
What’s under the hood: Parsing standardized learning content for AI
PDF
Journal of Dental Science - UDMY (2021).pdf
PDF
HVAC Specification 2024 according to central public works department
PDF
Journal of Dental Science - UDMY (2022).pdf
PDF
semiconductor packaging in vlsi design fab
PDF
Race Reva University – Shaping Future Leaders in Artificial Intelligence
PDF
FORM 1 BIOLOGY MIND MAPS and their schemes
PDF
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
PDF
Everyday Spelling and Grammar by Kathi Wyldeck
PDF
plant tissues class 6-7 mcqs chatgpt.pdf
PPTX
Core Concepts of Personalized Learning and Virtual Learning Environments
PDF
Climate and Adaptation MCQs class 7 from chatgpt
PPTX
DRUGS USED FOR HORMONAL DISORDER, SUPPLIMENTATION, CONTRACEPTION, & MEDICAL T...
PPTX
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx
Myanmar Dental Journal, The Journal of the Myanmar Dental Association (2013).pdf
LIFE & LIVING TRILOGY - PART (3) REALITY & MYSTERY.pdf
Skin Care and Cosmetic Ingredients Dictionary ( PDFDrive ).pdf
International_Financial_Reporting_Standa.pdf
fundamentals-of-heat-and-mass-transfer-6th-edition_incropera.pdf
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
What’s under the hood: Parsing standardized learning content for AI
Journal of Dental Science - UDMY (2021).pdf
HVAC Specification 2024 according to central public works department
Journal of Dental Science - UDMY (2022).pdf
semiconductor packaging in vlsi design fab
Race Reva University – Shaping Future Leaders in Artificial Intelligence
FORM 1 BIOLOGY MIND MAPS and their schemes
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
Everyday Spelling and Grammar by Kathi Wyldeck
plant tissues class 6-7 mcqs chatgpt.pdf
Core Concepts of Personalized Learning and Virtual Learning Environments
Climate and Adaptation MCQs class 7 from chatgpt
DRUGS USED FOR HORMONAL DISORDER, SUPPLIMENTATION, CONTRACEPTION, & MEDICAL T...
ELIAS-SEZIURE AND EPilepsy semmioan session.pptx

Creating Objects in Python

  • 3. The Point Class class MyFirstClass: pass # END Class
  • 4. The Point Class class MyFirstClass: pass # END Class “move along, nothing to see here”
  • 5. The Point Class class MyFirstClass: pass # END Class class <ClassName>: <Do stuff> # END Class
  • 6. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 7. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 8. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 9. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 10. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 11. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 12. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 13. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 14. >>> a = MyFirstClass() >>> print(a) <__main__.MyFirstClass object at 0x02D60B10> >>> b = a >>> print(b) <__main__.MyFirstClass object at 0x02D60B10> >>> b = MyFirstClass() >>> print(b) <__main__.MyFirstClass object at 0x02D60B30>
  • 15. The Point Class class Point: pass # END Class p1 = Point() p2 = Point()
  • 16. The Point Class class Point: pass # END Class p1 = Point() p2 = Point() Creating a class
  • 17. The Point Class class Point: pass # END Class p1 = Point() p2 = Point() Creating a class Creating objects of that class
  • 19. The Point Class p1.x = 5 p1.y = 4 p2.x = 3 p2.y = 6 print("P1-x, P1-y is: ", p1.x, p1.y); print("P2-x, P2-y is: ", p2.x, p2.y);
  • 20. The Point Class p1.x = 5 p1.y = 4 p2.x = 3 p2.y = 6 print("P1-x, P1-y is: ", p1.x, p1.y); print("P2-x, P2-y is: ", p2.x, p2.y); Adding Attributes: This is all you need to do, just declare them
  • 21. Python: Object Attributes • In Python the general form of declaring an attribute is as follows (we call this dot notation): OBJECT. ATTRIBUTE = VALUE
  • 23. The Point Class class Point: def reset(self): self.x = 0 self.y = 0 # END Reset # END Class
  • 24. The Point Class class Point: def reset(self): self.x = 0 self.y = 0 # END Reset # END Class Adding Methods: This is all you need
  • 25. The Point Class p = Point() p.x = 5 p.y = 4 print("P-x, P-y is: ", p.x, p.y); p.reset() print("P-x, P-y is: ", p.x, p.y);
  • 26. The Point Class p = Point() p.x = 5 p.y = 4 print("P-x, P-y is: ", p.x, p.y); p.reset() print("P-x, P-y is: ", p.x, p.y); 5 4
  • 27. The Point Class p = Point() p.x = 5 p.y = 4 print("P-x, P-y is: ", p.x, p.y); p.reset() print("P-x, P-y is: ", p.x, p.y); 5 4 0 0
  • 28. Let’s try that again…
  • 29. The Point Class p = Point() p.x = 5 p.y = 4 print("P-x, P-y is: ", p.x, p.y); p.reset() print("P-x, P-y is: ", p.x, p.y);
  • 30. The Point Class p = Point() p.x = 5 p.y = 4 print("P-x, P-y is: ", p.x, p.y); p.reset() print("P-x, P-y is: ", p.x, p.y);
  • 31. The Point Class p = Point() p.x = 5 p.y = 4 print("P-x, P-y is: ", p.x, p.y); p.reset() print("P-x, P-y is: ", p.x, p.y); We can also say: Point.reset(p)
  • 33. The Point Class class Point: def reset(self): self.x = 0 self.y = 0 # END Reset # END Class
  • 34. The Point Class • We can do this in a slightly different way, as follows:
  • 35. The Point Class class Point: def move(self,a,b): self.x = a self.y = b # END Move def reset(self): self.move(0,0) # END Reset # END Class
  • 36. The Point Class class Point: def move(self,a,b): self.x = a self.y = b # END Move def reset(self): self.move(0,0) # END Reset # END Class Declare a new method called “move” that writes values into the object.
  • 37. The Point Class class Point: def move(self,a,b): self.x = a self.y = b # END Move def reset(self): self.move(0,0) # END Reset # END Class Declare a new method called “move” that writes values into the object. Move the values 0 and 0 into the class to reset.
  • 39. The Point Class • The distance between two points is: d d = √(x2 – x1)2 + (y2 – y1) 2 d = √(6 – 2)2 + (5 – 2) 2 d = √(4)2 + (3)2 d = √16 + 9 d = √25 d = 5
  • 40. The Point Class • Let’s see what we have already:
  • 41. The Point Class class Point: def move(self,a,b): self.x = a self.y = b # END Move def reset(self): self.move(0,0) # END Reset # END Class
  • 42. The Point Class • Now let’s add a new method in:
  • 43. The Point Class import math class Point: def calc_distance(self, other_point): return math.sqrt( (self.x – other_point.x)**2 + (self.y – other_point.y)**2) # END calc_distance # END Class d = √(x2 – x1)2 + (y2 – y1)2
  • 44. The Point Class • Now let’s add some code to make it run:
  • 45. The Point Class p1 = Point() p2 = Point() p1.move(2,2) p2.move(6,5) print("P1-x, P1-y is: ", p1.x, p1.y) print("P2-x, P2-y is: ", p2.x, p2.y) print("Distance from P1 to P2 is:", p1.calc_distance(p2)) p1 p2
  • 47. Initialising an Object • What if we did the following:
  • 48. Initialising an Object p1 = Point() p1.x = 5 print("P1-x, P1-y is: ", p1.x, p1.y);
  • 49. Initialising an Object p1 = Point() p1.x = 5 print("P1-x, P1-y is: ", p1.x, p1.y);
  • 50. >>> Traceback (most recent call last): File "C:/Users/damian.gordon/AppData/ Local/Programs/Python/Python35-32/Point-error.py", line 11, in <module> print("P1-x, P1-y is: ", p1.x, p1.y); AttributeError: 'Point' object has no attribute 'y‘ >>>
  • 51. Initialising an Object • So what can we do?
  • 52. Initialising an Object • So what can we do? • We need to create a method that forces the programmers to initialize the attributes of the class to some starting value, just so that we don’t have this problem.
  • 53. Initialising an Object • So what can we do? • We need to create a method that forces the programmers to initialize the attributes of the class to some starting value, just so that we don’t have this problem. • This is called an initialization method.
  • 54. Initialising an Object • Python has a special name it uses for initialization methods. _ _ init _ _()
  • 55. class Point: def __init__(self,x,y): self.move(x,y) # END Init def move(self,a,b): self.x = a self.y = b # END Move def reset(self): self.move(0,0) # END Reset # END Class Initialising an Object
  • 56. Initialising an Object class Point: def __init__(self,x,y): self.move(x,y) # END Init def move(self,a,b): self.x = a self.y = b # END Move def reset(self): self.move(0,0) # END Reset # END Class When you create an object from this class, you are going to have to declare initial values for X and Y.
  • 57. Initialising an Object • So without the initialization method we could do this: – p1 = Point() – p2 = Point() • but with the initialization method we have to do this: – p1 = Point(6,5) – p2 = Point(2,2)
  • 58. Initialising an Object • And if we forget to include the values, what happens?
  • 59. Initialising an Object • And if we forget to include the values, what happens? Traceback (most recent call last): File "C:/Users/damian.gordon/AppData/Local/ Programs/Python/Python35-32/Point-init.py", line 21, in <module> p = Point() TypeError: __init__() missing 2 required positional arguments: 'x' and 'y'
  • 60. Initialising an Object • But if we want to be lazy we can do the following:
  • 61. Initialising an Object def __init__(self, x=0, y=0): self.move(x,y) # END Init
  • 62. Initialising an Object def __init__(self, x=0, y=0): self.move(x,y) # END Init
  • 63. Initialising an Object • And then we can do: – p1 = Point() – p2 = Point(2,2)
  • 64. Initialising an Object • And then we can do: – p1 = Point() – p2 = Point(2,2) If we don’t supply any values, the initialization method will set the values to 0,0.
  • 65. Initialising an Object • And then we can do: – p1 = Point() – p2 = Point(2,2) If we don’t supply any values, the initialization method will set the values to 0,0. But we can also supply the values, and the object is created with these default values.
  • 67. Documenting the Methods • Python is considered one of the most easy programming languages, but nonetheless a vital part of object-orientated programming is to explain what each class and method does to help promote object reuse.
  • 68. Documenting the Methods • Python supports this through the use of docstrings. • These are strings enclosed in either quotes(‘) or doublequotes(“) just after the class or method declaration.
  • 69. Documenting the Methods class Point: “Represents a point in 2D space” def __init__(self,x,y): ‘Initialise the position of a new point’ self.move(x,y) # END Init
  • 70. Documenting the Methods def move(self,a,b): ‘Move the point to a new location’ self.x = a self.y = b # END Move def reset(self): ‘Reset the point back to the origin’ self.move(0,0) # END Reset
  • 71. Initialising an Object • Now run the program, and then do: >>> >>> help (Point)
  • 72. Initialising an Object • And you’ll get: Help on class Point in module __main__: class Point(builtins.object) | Represents a point in 2D space | | Methods defined here: | | calc_distance(self, other_point) | Get the distance between two points | | move(self, a, b) | Move the point to a new location | | reset(self) | Reset the point back to the origin | ----------------------------------------------
  • 73. etc.