PY0101EN 3 4 Classes
PY0101EN 3 4 Classes
Objectives
After completing this lab you will be able to:
Table of Contents
Creating a Class
The first step in creating a class is giving it a name. In this notebook, we will
create two classes: Circle and Rectangle. We need to determine all the data that
make up that class, which we call attributes. Think about this step as creating a
blue print that we will use to create objects. In figure 1 we see two classes, Circle
and Rectangle. Each has their attributes, which are variables. The class Circle
has the attribute radius and color, while the Rectangle class has the attribute
height and width. Let’s use the visual examples of these shapes before we get to
the code, as this will help you get accustomed to the vocabulary.
Figure 1: Classes circle and rectangle, and each has their own attributes. The
class Circle has the attribute radius and colour, the class Rectangle has the
attributes height and width.
Figure 2: Three instances of the class Circle, or three objects of type Circle.
The colour attribute for the red Circle is the colour red, for the green Circle object
the colour attribute is green, and for the yellow Circle the colour attribute is
yellow.
Methods
Methods give you a way to change or interact with the object; they are functions
that interact with objects. For example, let’s say we would like to increase the
radius of a circle by a specified amount. We can create a method called
add_radius(r) that increases the radius by r. This is shown in figure 3, where
after applying the method to the "orange circle object", the radius of the object
increases accordingly. The “dot” notation means to apply the method to the
object, which is essentially applying a function to the information in the object.
Figure 3: Applying the method “add_radius” to the object orange circle object.
Creating a Class
Now we are going to create a class Circle, but first, we are going to import a
library to draw the objects:
The first step in creating your own class is to use the class keyword, then the
name of the class as shown in Figure 4. In this course the class parent will always
be object:
Figure 4: Creating a class Circle.
The next step is a special method called a constructor __init__ , which is used
to initialize the object. The inputs are data attributes. The term self contains
all the attributes in the set. For example the self.color gives the value of the
attribute color and self.radius will give you the radius of the object. We also
have the method add_radius() with the parameter r , the method adds the
value of r to the attribute radius. To access the radius we use the syntax
self.radius . The labeled syntax is summarized in Figure 5:
class Circle(object):
# Constructor
def __init__(self, radius=3, color='blue'):
self.radius = radius
self.color = color
# Method
def add_radius(self, r):
self.radius = self.radius + r
return(self.radius)
# Method
def drawCircle(self):
plt.gca().add_patch(plt.Circle((0, 0), radius=self.radius, fc=self.c
plt.axis('scaled')
plt.show()
We can use the dir command to get a list of the object's methods. Many of
them are default Python methods.
In [3]: # Find out the methods can be used on the object RedCircle
dir(RedCircle)
Out[3]: ['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getstate__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'add_radius',
'color',
'drawCircle',
'radius']
RedCircle.radius
Out[4]: 10
RedCircle.color
Out[5]: 'red'
RedCircle.radius = 1
RedCircle.radius
Out[6]: 1
We can draw the object by using the method drawCircle() :
RedCircle.drawCircle()
We can increase the radius of the circle by applying the method add_radius() .
Let's increases the radius by 2 and then by 5:
print('Radius of object:',RedCircle.radius)
RedCircle.add_radius(2)
print('Radius of object of after applying the method add_radius(2):',RedCirc
RedCircle.add_radius(5)
print('Radius of object of after applying the method add_radius(5):',RedCirc
Radius of object: 1
Radius of object of after applying the method add_radius(2): 3
Radius of object of after applying the method add_radius(5): 8
Let’s create a blue circle. As the default colour is blue, all we have to do is
specify what the radius is:
BlueCircle = Circle(radius=100)
As before, we can access the attributes of the instance of the class by using the
dot notation:
BlueCircle.radius
Out[12]: 100
BlueCircle.color
Out[13]: 'blue'
BlueCircle.drawCircle()
Compare the x and y axis of the figure to the figure for RedCircle ; they are
different.
The Rectangle Class
Let's create a class rectangle with the attributes of height, width, and color. We
will only add the method to draw the rectangle object:
class Rectangle(object):
# Constructor
def __init__(self, width=2, height=3, color='r'):
self.height = height
self.width = width
self.color = color
# Method
def drawRectangle(self):
plt.gca().add_patch(plt.Rectangle((0, 0), self.width, self.height ,f
plt.axis('scaled')
plt.show()
Let’s create the object SkinnyBlueRectangle of type Rectangle. Its width will
be 2 and height will be 3, and the color will be blue:
As before we can access the attributes of the instance of the class by using the
dot notation:
SkinnyBlueRectangle.height
Out[17]: 3
SkinnyBlueRectangle.width
Out[18]: 2
SkinnyBlueRectangle.color
Out[19]: 'blue'
SkinnyBlueRectangle.drawRectangle()
We can access the attributes of the instance of the class by using the dot
notation:
FatYellowRectangle.height
FatYellowRectangle.width
FatYellowRectangle.color
FatYellowRectangle.drawRectangle()
Task-2. Update the class with the default color for all
vehicles," white".
In [ ]: #Type your code here
Author
Joseph Santarcangelo
Other contributors
Mavis Zhou
Change Log
Date (YYYY-MM-
Version Changed By Change Description
DD)
Akansha
2023-05-16 2.2 updated lab under maintenance
Yadav