22
Python Classes and Objects
Python is an amazing programming language that supports both the functional programming paradigm and object-oriented programming paradigm.
Python's object-oriented programming system supports all the four fundamental features of a general OOPS framework: encapsulation, abstraction, inheritance and polymorphism.
- A class is a bundle of instance variables and related methods meant for defining a type of object viewed as a blueprint or a template of the objects.
- An object is an instance of a class with a specific set of attributes.
To create a class, use the keyword class as shown below
class ClassName:
<statement-1>
<statement-N>
1.Class Objects
From python documentation;
Class objects support two kinds of operations: attribute references and instantiation.
Attribute references use the standard syntax used for all attribute references in Python: obj.name.
- Valid attribute names are all the names that were in the class’s namespace when the class object was created. Example:
class Student:
"""A simple example class"""
rollno = 12
name = "Korir"
def messg(self):
return 'New Session will start soon.'
From the above example, Student.roll_no, Student.name are valid attribute references, returning an 12 and 'Korir' respectively.
Student.messg returns a function object.In Python self is a name for the first argument of a method which is different from ordinary function. Rather than passing the object as a parameter in a method the word self refers to the object itself.
Instantiation uses function notation.
To create an instance of a class, you call the class as if it were a function. The example below creates a new instance of the class and assigns this object to the local variable x.
x = Student()
- The instantiation operation creates an empty object. Therefore a class may define a special method named init(), like this:
def __init__(self):
self.data = []
__ init __() method may have arguments for greater flexibility for example:
class Student:
"""A simple example class"""
def __init__(self,sroll, sname):
self.r = sroll
self.n = sname
x = Student(10, 'Korir')
x.r, x.n
Output
(10, 'Korir')
2.Instance Objects
- The only operations understood by instance objects are attribute references. There are two kinds of valid attribute names: data attributes and methods.
Data attributes correspond to instance variables and need not be declared; like local variables, they spring into existence when they are first assigned to.
A method is a function that belongs to an object.
Valid method names of an instance object depend on its class. By definition, all attributes of a class that are function objects define corresponding methods of its instances.
From our example;
x.messg is a valid method reference, since Student.messg is a function.
3.Method Objects
- Usually, a method is called right after it is bound:
x.messg()
- In the Student example, this will return the string 'New Session will start soon'.
Instance attribute
- An instance attribute is a Python variable belonging to only one object.
- It is only accessible in the scope of the object and it is defined inside the constructor function of a class. For example:
class Circle:
def __ init __(self, radius):
self.pi = 3.14159
self.radius = radius
def area(self):
return self.pi * self.radius**2
def circumference(self):
return 2*self.pi * self.radius
- Both pi and radius are called instance attributes. Since they belong to a specific instance of the Circle class.
Class Attribute
- A class attribute is a Python Variable that belongs to a class rather than a particular object.
- It is shared between all other objects of the same class and is defined outside the constructor function __ init __(self,…), of the class. Example:
class Circle:
pi = 3.14159
def __init__(self, radius):
self.radius = radius
def area(self):
return self.pi * self.radius**2
def circumference(self):
return 2 * self.pi * self.radius
- The above example defines pi as a class attribute
- You can access the class attribute via instances of the class or via the class name:
object_name.class_attribute
class_name.class_attribute
From class attribute example;
c = Circle(10)
print(c.pi)
print(Circle.pi)
Output will be;
3.14159
3.14159
- Like other object-oriented language, Python allows inheritance from a parent (or base) class as well as multiple inheritances in which a class inherits attributes and methods from more than one parent.
- The concept of inheritance provides an important feature to the object-oriented programming is reuse of code
- The syntax for single inheritance is:
class DerivedClassName(BaseClassName):
<statement-1>
<statement-N>
- Below is a simple example of single inheritance in python.
class Parent():
def first(self):
print('first function')
class Child(Parent):
def second(self):
print('second function')
ob = Child()
ob.first()
ob.second()
Here's the output:
first function
second function
- From the above code, you can access the parent class function using the child class object.
Sub-classing
Calling a constructor of the parent class by mentioning the parent class name in the declaration of the child class is known as sub-classing. A child class identifies its parent class by sub-classing.
Other types of inheritance are;
Multiple Inheritance-When a child class inherits from more than one parent class.
Multilevel Inheritance-When a child class becomes a parent class for another child class.
Hybrid Inheritance- involves multiple inheritance from the same base or parent class.
Hierarchical Inheritance-involves multiple inheritance taking place in a single program.
22