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 are defined within the __init__
method of a class. They are unique to each object and hold data specific to that object.
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.
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 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.
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
.
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.
Instance variables and methods work together to encapsulate the state and behavior of an object.
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.
self
keyword is used to access instance variables and methods within the class.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.