How to create a class in python
In any programming language, a class is a user-defined plan or blueprint using which objects or instances of the class are created.
You may wonder why we need classes in programming. We can create something like a variable or a structure, store what we want, and use it. So below are the reasons:
- A class can have its attributes – variables and functions with pre-stored values and functionalities in the class definition.
- Example situation: If we want to store the data of different age groups of children and their details in an orphanage :
- We cannot just create a list and keep on storing the ages and names of the children without any organization.
- Creating multiple lists for multiple age groups – one list to store ages, one for names, another to match – becomes complex and leads to ambiguity.
Syntax:
#Definition of a class
class class_name:
#body of the class
#variables
#functions
#body of the functions
Important points about class in Python
- “class” is a keyword in Python libraries.
- A class name must be capitalized/
- Attributes are the variables owned by the class (declared inside the class) that the created objects can use.
- Methods are the functions owned by the class (defined inside the class) that the created objects can use.
- The created objects using the dot (.) operator use these attributes and methods of a class.
Example program:
Class Employee:
#Attributes like name, id
#Methods
To use the attributes in the class, we need to create objects for the class. Learn how to create an object: How to create an object in python?
The __init__ method
For Python class, we need to learn about the self variableand the __init__ method.
- The __init__() method is a constructor which will be invoked by default when a new object is created and initialized.
- “self” is not a keyword in Python. It is a special variable. When we declare a method in a class, we need to declare the first argument as self.
- We will be able to access the attributes and the methods of the class using this self-argument. It holds the arguments to the attributes.
- Even in the init method, we must declare the first argument as self.
- Self determines the current instance of the class; In the case of the init method, it refers to the newly created object, while in other methods, it refers to the object whose method is called.
- Even if we want to create a method with no arguments, we need to keep the self variable as the only argument in the method.
The syntax will look like this:
class Class_Name:
attribute (variable)1
attribute (variable)2
...
attribute (variable)N
def __init__(self,arg1,...,argn):
def Method_name1(self,arg1,...,argn):
def Method_name2(self):
...
def Method_nameN(self,arg1,...,argn):
Example programs:
# Using the init method
class Student:
def __init__(self,name,age,email):
self.name = name
self.age = age
self.email = email
name = input("Please enter the name of the student1: ")
age = int(input("Please enter the age of the student1: "))
stud = Student(name,age,'santhosh@gmail.com')
name = input("Please enter the name of the student2: ")
age = int(input("Please enter the age of the student2: "))
stud2 = Student(name,age,'')
print("Stud_1.name =",stud.name)
print("Stud_2.name =",stud2.name)
Output:
Please enter the name of the student1: Santhosh
Please enter the age of the student1: 19
Please enter the name of the student2: Rakesh
Please enter the age of the student2: 19
Stud_1.name = Santhosh
Stud_2.name = Rakesh
Understanding: In the program, we created a " Student " class. Using the __init__ method, we defined the three attributes of the class. We created two objects with inputs for attributes. Using the created objects, we accessed the names of both students.
#Using more methods in the class
class Person_details:
def __init__(self,name):
self.name = name
def setName(self,name):
self.name = name
def getName(self):
return self.name
name = input("Enter the name of the person1: ")
p1 = Person_details(name)
name = input("Enter the name of the person2: ")
p2 = Person_details(name)
print("Person P1 name:",p1.getName())
print("Person P2 name:",p2.getName())
Output:
Enter the name of the person1: Mahesh
Enter the name of the person2: Rakesh
Person P1 name: Mahesh
Person P2 name: Rakesh
Understanding:
Here, we used two methods, setName() and getName(). In the setName() function, we are assigning the name given to the attribute. In the getName() function, we are using the return statement and returned the name.
Attributes for an Empty class
Python language allows the programmer to create attributes of an object declared for an empty class. We can even modify the values of attributes in different objects.
Below is an example of an empty class “Student_info”. In the body of the program, we created an object Stud_1 for the class and gave values to three attributes of the class:
class Student_info:
pass
Stud_1 = Student()
Stud_1.name = 'Sonu'
Stud_1.age = 19
Stud_1.graduate = 'B-tech'
print("Stud_1.name:",Stud_1.name)
print("Stud_1.age:", Stud_1.age)
print("Stud_1.graduate:", Stud_1.graduate)
Output:
Stud_1.name: Sonu
Stud_1.age: 19
Stud_1.graduate: B-tech
We discussed above that the init method is a constructor. Diving deep into constructors in python.
Constructors in Python
A constructor can be understood as a type of a method. We use this to perform actions or tasks like initializing variables and other tasks that must be done when a new object is created.
In Python, we use the same __init__(self) in all classes. The conventions of the name: Two leading and trailing underscores. It is designed this way to prevent ambiguity with user-defined methods.
If we create a class without using the constructor, then, by default, Python creates a constructor which doesn't have functionality other than instantiating the created object.
Let’s summarize the learned topic till now:
Every class in Python will consist of 3 key partners:
- The constructor
- Attributes of the class
- Methods of the class
We create a class. Inside the class, we build the constructor __init__() with self argument and other arguments that we bind with the class attributes inside the body. So, when we create an object with some parameters, these parameters will occupy the arguments and be stored in the class attributes.
It is the same in normal methods, but in normal methods, we will have a task going on, but in the init, it is only about initializing the arguments.
The self keyword helps bind the parameters and arguments of the constructor and other methods. It must be declared as the first argument in any method.