What is self in Python?
By ducpm, at: Dec. 19, 2022, 6:57 p.m.
Estimated Reading Time: __READING_TIME__ minutes
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
selfis 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.nameandself.agerefer to the instance's attributes.
-
The
greet()method usesselfto 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.