What is self in Python?

By datnq, at: Dec. 19, 2022, 6:57 p.m.

Estimated Reading Time: 4 min read

What is self in Python?
What is self in Python?

What is self in Python?


In Python, self is a special keyword used in class definitions to represent the instance of the class. It allows access to the attributes and methods of the class in object-oriented programming.

Some of us use this every day without knowing some core features

 

Why Use self?

The self parameter acts as a reference to the current instance of the class. It allows methods within the class to access and modify the object’s attributes and call other methods.


Key Characteristics of self:

  • Refers to the current instance of the class.

  • Must be the first parameter of instance methods.

  • Can be named differently, though self is the convention.

 

How self Works

Here's a simple example:

class Person:
    def __init__(self, name, age):
        self.name = name  # Assigns the name to the instance attribute
        self.age = age    # Assigns the age to the instance attribute

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

# Create an instance of Person
person = Person("Alice", 30)
person.greet()  # Output: Hello, my name is Alice and I am 30 years old.

 

Explanation:

  • __init__ is a special method called the constructor.

  • self.name and self.age refer to the instance's attributes.

  • The greet() method uses self to access and print these attributes.

 

Common Mistakes with self


1. Omitting self in method definitions:

def greet():  # Missing self
    print("Hello!")


Fix:

def greet(self):
    print("Hello!")


2. Confusing self with class variables:

class Counter:
    count = 0  # Class variable

    def __init__(self):
        self.count += 1  # Incorrect usage


Fix: Use Counter.count to modify the class variable.

 

Advanced Use Cases


Accessing Class Attributes
 

class Example:
    class_variable = 42

    def show_class_variable(self):
        print(f"Class variable: {Example.class_variable}")

 

Method Chaining
 

class Addition:
    def __init__(self):
        self.data = []

    def add(self, value):
        self.data.append(value)
        return self  # Enables method chaining

    def display(self):
        print(self.data)

b = Addition()
b.add(1).add(2).add(3).display()  # Output: [1, 2, 3]

 

Conclusion

The self keyword is essential in Python's object-oriented programming. It represents the instance of the class and provides access to the instance's data and methods. By understanding how to use self, you can create robust and reusable code in your Python projects.


Subscribe

Subscribe to our newsletter and never miss out lastest news.