Instance attributes are usually set inside the __init__ method.
Examples
This creates a Dog class where each dog has its own name and age.
Python
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
Each Car object will have its own color stored as an instance attribute.
Python
class Car:
def __init__(self, color):
self.color = color
Each Person object stores a different name.
Python
class Person:
def __init__(self, name):
self.name = name
p1 = Person('Alice')
p2 = Person('Bob')
print(p1.name) # Aliceprint(p2.name) # Bob
Sample Program
This program creates two Book objects with different titles and authors. It prints each book's details using instance attributes.
Python
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
book1 = Book('1984', 'George Orwell')
book2 = Book('Pride and Prejudice', 'Jane Austen')
print(f"Book 1: {book1.title} by {book1.author}")
print(f"Book 2: {book2.title} by {book2.author}")
OutputSuccess
Important Notes
You can add or change instance attributes anytime after creating the object.
Instance attributes belong to the object, not the class itself.
Summary
Instance attributes hold data unique to each object.
They are usually set inside the __init__ method using self.
Each object can have different values for its instance attributes.
Practice
(1/5)
1. What is an instance attribute in Python classes?
easy
A. A variable shared by all objects of the class
B. A function that belongs to the class
C. A method to create new objects
D. A variable that stores data unique to each object
Solution
Step 1: Understand instance attributes
Instance attributes are variables that belong to each object separately, not shared.
Step 2: Differentiate from class attributes
Class attributes are shared by all objects, but instance attributes hold unique data per object.
Final Answer:
A variable that stores data unique to each object -> Option D
Quick Check:
Instance attribute = unique data per object [OK]
Hint: Instance attributes belong to objects, not the class itself [OK]
Common Mistakes:
Confusing instance attributes with class attributes
Thinking methods are attributes
Assuming all objects share the same attribute values
2. Which of the following is the correct way to define an instance attribute inside a class?
easy
A. name = "Alice" outside any method
B. def name(self): return "Alice"
C. self.name = "Alice" inside __init__ method
D. class.name = "Alice" inside __init__
Solution
Step 1: Identify instance attribute syntax
Instance attributes are set inside __init__ using self.attribute = value.
Step 2: Check each option
self.name = "Alice" inside __init__ method uses self.name = "Alice" inside __init__, which is correct. Others are class attributes, methods, or invalid.
Final Answer:
self.name = "Alice" inside __init__ method -> Option C
Hint: Use self.attribute = value inside __init__ for instance attributes [OK]
Common Mistakes:
Defining attributes outside __init__ without self
Using class.attribute instead of self.attribute
Confusing methods with attributes
3. What will be the output of this code?
class Dog:
def __init__(self, name):
self.name = name
dog1 = Dog("Buddy")
dog2 = Dog("Max")
print(dog1.name)
print(dog2.name)
medium
A. Buddy
Max
B. Max
Buddy
C. Buddy
Buddy
D. Max
Max
Solution
Step 1: Understand instance attribute assignment
dog1.name is set to "Buddy" and dog2.name is set to "Max" separately.
Step 2: Print instance attributes
Printing dog1.name outputs "Buddy" and dog2.name outputs "Max".
Final Answer:
Buddy
Max -> Option A
Quick Check:
Each object has its own name attribute [OK]
Hint: Each object keeps its own attribute values [OK]
Common Mistakes:
Assuming all objects share the same attribute
Mixing up the order of print statements
Confusing class and instance attributes
4. Find the error in this code:
class Car:
def __init__(self, model):
model = model
car = Car("Tesla")
print(car.model)
medium
A. AttributeError because model is not set as instance attribute
B. SyntaxError due to missing self
C. TypeError because __init__ has wrong parameters
D. No error, prints Tesla
Solution
Step 1: Check attribute assignment in __init__
The code assigns model = model, which only assigns local variable, not instance attribute.
Step 2: Accessing car.model causes error
Since self.model is never set, car.model does not exist, causing AttributeError.
Final Answer:
AttributeError because model is not set as instance attribute -> Option A
Quick Check:
Use self.model = model to set instance attribute [OK]
Hint: Always use self.attribute = value to set instance attributes [OK]
Common Mistakes:
Forgetting self. when assigning attributes
Assuming local variable sets instance attribute
Expecting attribute to exist without self
5. You want to create a class Book where each book has a title and a list of authors. How do you correctly set instance attributes so each book has its own authors list without sharing it between objects?
hard
A. Set self.authors = None and assign list later
B. Set self.authors = [] inside __init__ method
C. Set self.authors = authors where authors is a default empty list in parameters
D. Set authors = [] as a class attribute outside methods
Solution
Step 1: Avoid shared mutable class attributes
Setting authors = [] as class attribute shares the same list across all objects, causing bugs.