Python: Understanding the Significance of Self

python Logo White

Navigating Class Instances and Object-Oriented Programming

Welcome to the world of object-oriented programming in Python! Self plays a pivotal role in understanding classes, instances, and their interaction. In this comprehensive guide, we’ll unravel the significance of ‘self,’ exploring its usage within Python classes to create and manipulate instances effectively. By the end, you’ll have a clear understanding of how ‘self’ operates and its importance in Python’s OOP paradigm.

What is self?

In Python, the self keyword is used as the first parameter in a method definition within a class. It represents the instance of the class and allows you to access and modify the instance’s attributes and call its methods. When you create an object from a class and call its methods, Python automatically passes the instance as the first argument to the method using the self parameter.

How to use self()

Here’s an example of how to use self in Python:

class MyClass:
    def __init__(self, name, age): = name
        self.age = age
def greet(self): return f"Hello, my name is {} and I am {self.age} years old."
def set_age(self, new_age): self.age = new_age
# Create an instance of the class person = MyClass("Alice", 30)
# Access instance attributes using self print(person.greet()) # Output: Hello, my name is Alice and I am 30 years old.
# Modify instance attribute using self person.set_age(35) print(person.greet()) # Output: Hello, my name is Alice and I am 35 years old.

In the example above, and self.age refer to the attributes of the instance of MyClass. When you call the greet() method, it accesses these attributes through self. Similarly, the set_age() method uses self to modify the age attribute of the instance.


Remember that when you call methods or access attributes from within the class, you must use self.attribute_name to reference the instance’s attributes. When calling the methods or accessing attributes from outside the class, you use the instance name, as shown in the example (person.greet() and person.set_age(35)).

We can create a simple Rectangle class that calculates the area and perimeter of a rectangle using its width and height attributes.

Let’s try another example:

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height
def area(self): return self.width * self.height
def perimeter(self): return 2 * (self.width + self.height)
# Create an instance of the class rect = Rectangle(5, 10)
# Access instance attributes using self print("Width:", rect.width) # Output: Width: 5 print("Height:", rect.height) # Output: Height: 10
# Call instance methods using self print("Area:", rect.area()) # Output: Area: 50 (5 * 10) print("Perimeter:", rect.perimeter()) # Output: Perimeter: 30 (2 * (5 + 10))

In this example, we define the Rectangle class with width and height attributes, as well as area() and perimeter() methods. These methods use self.width and self.height to access the instance’s attributes and perform calculations to get the area and perimeter of the rectangle.

By creating an instance of the Rectangle class and calling its methods, we can easily calculate the area and perimeter of different rectangles using the same class blueprint.


Congratulations on grasping the nuances of ‘self’ in Python! You’ve unlocked a fundamental understanding of class instances and their behavior through ‘self.’ As you continue your Python journey, practice creating classes, defining methods, and utilizing ‘self’ to create efficient and scalable code. With this understanding, you’re equipped to harness the power of object-oriented programming in Python.

That’s All Folks!

You can explore more of our Python guides here: Python Guides

Luke Barber

Hello, fellow tech enthusiasts! I'm Luke, a passionate learner and explorer in the vast realms of technology. Welcome to my digital space where I share the insights and adventures gained from my journey into the fascinating worlds of Arduino, Python, Linux, Ethical Hacking, and beyond. Armed with qualifications including CompTIA A+, Sec+, Cisco CCNA, Unix/Linux and Bash Shell Scripting, JavaScript Application Programming, Python Programming and Ethical Hacking, I thrive in the ever-evolving landscape of coding, computers, and networks. As a tech enthusiast, I'm on a mission to simplify the complexities of technology through my blogs, offering a glimpse into the marvels of Arduino, Python, Linux, and Ethical Hacking techniques. Whether you're a fellow coder or a curious mind, I invite you to join me on this journey of continuous learning and discovery.

Leave a Reply

Your email address will not be published. Required fields are marked *

Verified by MonsterInsights