Instance Variables and Methods in Python
In Python, instance variables and methods are specific to an object created from a class. Instance variables store data unique to each object, while instance methods operate on that data. This article explains instance variables and methods with examples.
Instance Variables
Instance variables are defined within the __init__ method of a class. They are unique to each object and hold data specific to that object.
Example 1: Creating Instance Variables
class Person:
def __init__(self, name, age):
self.name = name # Instance variable
self.age = age # Instance variable
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)
print(f"Person 1: {person1.name}, {person1.age}")
print(f"Person 2: {person2.name}, {person2.age}")
In this example, the name and age instance variables are initialized for each object using the __init__ method.
Example 2: Modifying Instance Variables
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Alice", 30)
print(f"Before: {person.name}, {person.age}")
# Modifying instance variables
person.name = "Alicia"
person.age = 31
print(f"After: {person.name}, {person.age}")
Instance variables can be modified directly using the dot operator. In this example, the name and age attributes are updated after the object is created.
Instance Methods
Instance methods are functions defined inside a class that operate on the instance variables of an object. They always take self as the first parameter, which refers to the specific object.
Example 3: Defining and Using Instance Methods
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, my name is {self.name} and I am {self.age} years old."
person = Person("Alice", 30)
print(person.greet())
In this example, the greet method is an instance method that returns a greeting message using the instance variables name and age.
Example 4: Instance Methods Modifying Attributes
class Counter:
def __init__(self):
self.count = 0
def increment(self):
self.count += 1
def get_count(self):
return self.count
counter = Counter()
counter.increment()
counter.increment()
print(f"Counter: {counter.get_count()}")
In this example, the increment method modifies the count instance variable, and the get_count method returns its current value.
Combining Instance Variables and Methods
Instance variables and methods work together to encapsulate the state and behavior of an object.
Example 5: Complete Class with Variables and Methods
class BankAccount:
def __init__(self, account_holder, balance=0):
self.account_holder = account_holder
self.balance = balance
def deposit(self, amount):
self.balance += amount
return f"${amount} deposited. New balance: ${self.balance}"
def withdraw(self, amount):
if amount > self.balance:
return "Insufficient funds"
self.balance -= amount
return f"${amount} withdrawn. Remaining balance: ${self.balance}"
account = BankAccount("Alice", 100)
print(account.deposit(50))
print(account.withdraw(30))
print(account.withdraw(150))
This example defines a BankAccount class with instance variables account_holder and balance. The instance methods deposit and withdraw manipulate the balance attribute.
Key Points
- Instance variables are unique to each object and store its state.
- Instance methods operate on instance variables and define the behavior of the object.
- The
selfkeyword is used to access instance variables and methods within the class. - Instance variables can be modified directly or through instance methods.
Conclusion
Instance variables and methods are essential building blocks of classes in Python. They allow you to define the state and behavior of individual objects, enabling you to model real-world entities effectively in your code.