Python Tutorial
Python Variable
Python Operators
Python Sequence
Python String
Python Flow Control
Python Functions
Python Class and Object
Python Class Members (properties and methods)
Python Exception Handling
Python Modules
Python File Operations (I/O)
In Python, the self
keyword is a convention used in instance methods to refer to the instance of the class on which the method is called. It allows you to access the instance's attributes and other methods. Here's a step-by-step tutorial on using self
in Python:
First, create a class with an __init__
method to initialize instance attributes and a custom instance method. In this example, we create a Person
class with name
and age
attributes and a greet
method:
class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self): print(f"Hello, my name is {self.name} and I'm {self.age} years old.")
self
:The self
keyword is used inside the __init__
method and the greet
method to refer to the instance of the Person
class. When you create an instance of the class, the self
parameter in the methods is automatically bound to that instance.
For example, when you write self.name = name
, you're creating an attribute called name
for the current instance and setting its value to the name
parameter passed to the __init__
method.
To create an instance of the Person
class, call the class as if it were a function, passing the required arguments for the __init__
method:
person1 = Person("Alice", 30)
You can access the instance's attributes and call its methods using the dot notation:
print(person1.name) # Output: Alice print(person1.age) # Output: 30 person1.greet() # Output: Hello, my name is Alice and I'm 30 years old.
self
is a convention, not a keyword:While self
is the widely accepted convention, you can use any name you want for the first parameter of instance methods. However, it's recommended to stick to the convention to ensure consistency and readability:
class Person: def __init__(instance, name, age): instance.name = name instance.age = age def greet(instance): print(f"Hello, my name is {instance.name} and I'm {instance.age} years old.")
This tutorial covered the basics of using the self
keyword in Python to refer to the instance of a class inside its methods. Understanding the role of self
is essential for working with classes and instances in object-oriented programming.
Accessing instance variables with 'self' in Python:
class MyClass: def __init__(self, value): self.value = value def print_value(self): print(self.value) # Accessing instance variables with 'self' obj = MyClass(42) obj.print_value() # Output: 42
Static methods and class methods vs 'self' in Python:
@staticmethod
and @classmethod
decorators, respectively.class MyClass: class_variable = "I'm a class variable" def __init__(self, value): self.value = value def instance_method(self): print(f"Instance method: {self.value}") @staticmethod def static_method(): print("Static method") @classmethod def class_method(cls): print(f"Class method: {cls.class_variable}") # Using static and class methods obj = MyClass(42) obj.instance_method() MyClass.static_method() MyClass.class_method()
Dynamic use cases of 'self' in Python programming:
class DynamicClass: def __init__(self, value): self.value = value def update_value(self, new_value): self.value = new_value # Dynamic use cases of 'self' obj = DynamicClass(42) print(obj.value) # Output: 42 obj.update_value(55) print(obj.value) # Output: 55