Understanding the self Keyword in Python | Python tutorials on BeingSkilled

Understanding the self Keyword in Python

When learning Python’s object-oriented programming (OOP) features, one of the most frequently encountered (and often misunderstood) terms is self. It appears in every method inside a class, and it’s essential to how Python handles objects and instances.

This guide explains what self really means, why it’s necessary, and how to use it properly in your classes and methods.

1. What is self in Python?

In Python, self represents the instance of the class. It is automatically passed to instance methods and allows you to access and modify the object’s attributes and methods.

Think of self as a reference to the current object — similar to this in other programming languages like Java or C++.

2. Why is self Needed?

  • To differentiate between instance variables and local variables
  • To allow access to the object’s own properties and methods
  • To make methods and attributes specific to the instance calling them

3. Basic Example Using self

class Person:
    def __init__(self, name, age):
        self.name = name  # 'self.name' is the instance variable
        self.age = age

    def greet(self):
        return f"Hi, I'm {self.name} and I'm {self.age} years old."
p1 = Person("Alice", 28)
print(p1.greet())

Output:

Hi, I'm Alice and I'm 28 years old.

4. Using self in Other Methods

Besides __init__, self is also used in any instance method to access or modify object data.

class Counter:
    def __init__(self):
        self.count = 0

    def increment(self):
        self.count += 1

    def get_count(self):
        return self.count
c = Counter()
c.increment()
c.increment()
print(c.get_count())  # Output: 2

5. Without self, It Breaks

Omitting self from method definitions or attribute access leads to errors.

class WrongExample:
    def __init__(name):  # ❌ Missing 'self'
        name = name

Calling WrongExample("Test") will raise an error because Python doesn’t know what name is referring to without self.

6. self is Not a Keyword

Interestingly, self is not a reserved keyword in Python. It’s just a naming convention. You can technically use another name, but it's strongly discouraged as it breaks readability and community standards.

class Strange:
    def __init__(s, name):  # Technically allowed but bad practice
        s.name = name

7. Accessing Attributes with self

Without self, any variables assigned in a method are local to that method and lost after it finishes running.

class Animal:
    def set_type(self, type):
        self.type = type

    def get_type(self):
        return self.type
a = Animal()
a.set_type("Mammal")
print(a.get_type())  # Output: Mammal

8. Summary Table

Concept Explanation Example
self Refers to the instance of the class self.name = name
Access Attributes Used to get/set variables of the current object self.age
Instance Methods First parameter should always be self def greet(self):

9. Final Thoughts

The self keyword is at the heart of how classes and objects work in Python. By using self, you can write flexible, instance-specific code that’s easy to understand and maintain. Though it's a simple concept, mastering it is critical for effective object-oriented programming in Python.