You are currently viewing Explain Classes & Objects in Python

Python Classes allow you to create custom data types that can have their own attributes and methods and an object is an instance of a class. Using classes makes it easier to organize and manipulate data in programs. In this article, we will explain the basics of classes and objects in Python with examples.


1. Introduction to Classes and Objects

Classes which also sometimes means user-defined data types, allow you to create a blueprint or templates for creating objects.

Python is an object-oriented programming language, which means it emphasizes the use of classes and objects to organize and manipulate data in programs.

The object is the instance of the class. We can create multiple objects or instances of the same class. Each object has its own unique set of attributes (data) and methods (functions) that define its behavior.

A class is a user-defined data type that consists of attributes and methods. Attributes are variables that hold data specific to an instance of the class, such as a person’s name, age, or address.

Methods are functions that define the behavior of the class, such as calculating a person’s age from their date of birth or printing their name and age to the console.

2. Creating Classes in Python

In Python, classes are defined using the class keyword, followed by the name of the class. The body of the class is indented and contains the class’s attributes and methods.

See the following general structure of a class in python:

# Generic Structure of a Class
class myClass:
    def __init__(self, my_var):
        self.my_var = my_var
    def my_func(self, other_var):
        return self.my_var + other_var

We can have multiple methods inside the class. In the above example, we have just one method and one constructor of the class.

Suppose you want to create a blueprint for a Circle shape. We can create a class for it, and we can then have multiple instances of this class.

# Creating a class with name Circle
class Circle:
    pi = 3.14159
    # Constructor
    def __init__(self, radius):
        self.radius = radius
    # Method for the calculating area
    def area(self):
        return Circle.pi * self.radius ** 2

3. Creating Objects

Once we’ve defined a class in Python, we can create objects of that class using the class name followed by parentheses. Creating an object of a class is also called instantiating the class.

Example of creating an object of the Circle class we defined earlier:

# Create an object of a class
circle_obj = Circle(3)

When we create an object of a class, Python automatically calls the __init__ method of the class with the object being created as the first argument (self), followed by any other arguments passed to the class constructor.

We can create multiple objects of a class:

# Creating Object
object_1 = Circle(2)

# Creating second Object
object_2 = Circle(3)

4. Calling Methods of a Class

In object-oriented programming, a method is a function that belongs to a class. We can call the methods of a class on an object of that class using dot notation.

When we call a method of a class on an object, Python automatically passes the object as the first argument to the method. This is why the self parameter is used in the method definition to represent the object itself.

# Extended version of the Circle class
class Circle:
    def __init__(self, radius):
        self.radius = radius

    # Get Area of the Circle
    def get_area(self):
        return 3.14 * self.radius ** 2
    # Get Circumference of Circle
    def get_circumference(self, precision):
        return round(2 * 3.14 * self.radius, precision)

To call the get_area() method on an object of the Circle class, we can use dot notation.

# Two objects of the class
circle1 = Circle(5)
circle2 = Circle(7)

# Calling methods on both objects
area1 = circle1.get_area()
area2 = circle2.get_area()

# Print and see the results
# Output: 78.5
# Output: 153.86

5. Nested Classes

We can define a class inside another class. Such classes are called nested classes. A nested class can access the attributes and methods of the outer class, and can also be accessed by the outer class.

# Nested class example
class Circle:
    def __init__(self, radius, x, y):
        self.radius = radius = self.Point(x, y)
    def get_area(self):
        return 3.14 * self.radius ** 2
    # This class in inside the Circle Class
    class Point:
        def __init__(self, x, y):
            self.x = x
            self.y = y

Now we can access the inner class using the outer class. To create the object of the inner class see the following code:

# Creating Object of Nested class
point = Circle.Point(3, 4)
# Output: 3


# Output: 4

6. Summary and Conclusion

We have learned how classes and objects work in python. From building classes to creating objects, we have also discussed nested classes. Classes and objects are important concepts in Python programming language, as Python supports object-oriented programming. I hope this article was helpful. If you have any questions, leave them in the comment section.

Happy Coding!