Instance Variables and Instance Methods in Python
Learn How Instance Variables and Methods Actually Work in Python

In Object-Oriented Programming (OOP), two of the most important concepts are:
Instance Variables
Instance Methods
If you don’t understand these properly, OOP will always feel confusing.
So let’s break everything down step by step in the simplest way possible.
Let’s Start with a Simple Real-Life Example
Imagine a classroom. Learn How Instance Variables and Methods Actually Work in Python
You (teacher) are the class blueprint.
Your students are objects.
Every student:
Has a name
Has a roll number
Has marks
Can perform actions (submit homework, give test, etc.)
Now here’s the important part:
Even though all students come from the same class,
each student has their own data.
That “own data” is exactly what we call:
Instance Variables
And the actions they perform?
Instance Methods
What is an Instance Method in Python?
An instance method is a method that belongs to an object and works on that specific object.
Definition (Simple Words)
An instance method:
Is defined inside a class
Has
selfas its first parameterCan access and modify instance variables
Why Do We Need
self?
When we create multiple objects from a class, each object has its own data.
self tells Python:
Work with the current object that is calling this method
Example
class User: def activate(self): self.is_active = TrueIf we create two objects:
user1 = User() user2 = User()When we call
user1.activate()Python automatically does this internally:
User.activate(user1)That means:
self = user1So instance methods always operate on the object that calls them
What is an Instance Variable in Python?
An instance variable is a variable that belongs to a specific object.
It is created using:
self.variable_name = value
Important Concept
Instance variables:
Store data
Are unique for each object
Exist inside the object
Can be different for different objects
Example
def set_email(self, email):
self.email = email
When we call:
user1.set_email("shameel@hasabtech.com")
It becomes:
user1.email = "shameel@hasabtech.com"
Now email belongs only to user1.
If we check user2, it still does NOT have email until we set it.
That is why instance variables are object-specific.
Complete Example with Deep Explanation
Let’s build a proper example and understand what happens step by step.
class User:
def activate(self):
self.is_active = True
def deactivate(self):
self.is_active = False
def set_email(self, email):
self.email = email
def show_status(self):
print(f"{self.email} is {'active' if self.is_active else 'not active'}")
Step 1: Creating Objects (Instances)
user1 = User()
user2 = User()
When we execute this:
Python creates two separate objects in memory
Each object has its own space to store data
Both objects have access to all instance methods
Important: Object and Instance mean the same thing.
What Happens Inside Memory?
Even though both objects come from the same class blueprint:
user1has its own data storageuser2has its own data storage
They do NOT share instance variables.
This is the beauty of OOP.
Understanding Instance Methods in Action
Now let’s call:
user1.set_email("shameel@hasabtech.com")
What happens?
Python sees
user1It passes
user1automatically asselfInside method:
self.email = emailBecomes
user1.email = "shameel@hasabtech.com"
Now:
user1has emailuser2still has nothing
This proves instance variables belong to objects.
Adding More Data to Objects
Now:
user1.activate()
user2.deactivate()
This creates:
user1.is_active = True
user2.is_active = False
Again:
Each object has its own
is_activeThey are completely independent
This independence is the core idea of instance variables.
Why Methods are Called Instance Methods?
Because they:
Work with instance variables
Depend on the object
Use
selfto access object data
For example:
def show_status(self):
print(f"{self.email} is {'active' if self.is_active else 'not active'}")
This method:
Reads
self.emailReads
self.is_activePrints data of that specific object
So this method behaves differently for each object.
That’s why it is called an instance method.
Common Beginner Confusion
Many students think:
Is
selfa keyword?
No.
self is just a naming convention.
You can write:
def activate(myobject):
But by convention, we always write self
Why This Concept is Very Important?
If you understand instance variables and instance methods, you can:
Build login systems
Create user management systems
Understand Django models
Work with APIs
Design real-world applications
Without understanding self, OOP will feel complicated.
Final Understanding
Whenever:
You attach data using
self→ It becomes an instance variable.You define a method with
self→ It becomes an instance method.
Each object:
Has its own data
Shares method structure
Behaves independently
Summary
Object = Instance. They mean the same thing.
Instance Variables are the "adjectives" (data) that describe the object.
Instance Methods are the "verbs" (actions) the object can perform.
selfis the bridge that connects the method to the specific object’s data.Each object has its own copy of instance variables
Stay connected with hasabTech for more information:
Website | Facebook | LinkedIn | YouTube | X (Twitter) | TikTok





