Python tutorials > Object-Oriented Programming (OOP) > Classes and Objects > How to create objects?
How to create objects?
__init__ method, and how to access object attributes and methods.
Basic Object Creation
Dog class with a constructor (__init__) that initializes the object's name and breed. The bark method demonstrates an object-specific behavior. We create two Dog objects, dog1 and dog2, by calling the class as if it were a function, passing the necessary arguments to the constructor. We then access the attributes (name, breed) and call a method (bark) on these objects.
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return f"{self.name} says Woof!"
# Creating objects (instances) of the Dog class
dog1 = Dog("Buddy", "Golden Retriever")
dog2 = Dog("Lucy", "Labrador")
print(dog1.name) # Output: Buddy
print(dog2.breed) # Output: Labrador
print(dog1.bark()) # Output: Buddy says Woof!
The __init__ Method (Constructor)
__init__ method is a special method in Python classes. It's automatically called when a new object of the class is created. It's often referred to as the constructor because its primary purpose is to initialize the object's attributes. The self parameter refers to the instance of the class being created. It's mandatory for all instance methods within a class. In the Person class example, the constructor initializes the name and age attributes.
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."
person1 = Person("Alice", 30)
print(person1.greet()) # Output: Hello, my name is Alice and I am 30 years old.
Accessing Object Attributes and Methods
object.attribute). Methods are also called using the dot notation (object.method()). The Car class demonstrates how attributes (make, model, speed) are accessed and modified. The methods (accelerate, brake, get_speed) define the behavior of the Car object.
class Car:
def __init__(self, make, model):
self.make = make
self.model = model
self.speed = 0 # Initial speed
def accelerate(self, increment):
self.speed += increment
def brake(self, decrement):
self.speed -= decrement
if self.speed < 0:
self.speed = 0
def get_speed(self):
return self.speed
my_car = Car("Toyota", "Camry")
print(f"Initial speed: {my_car.get_speed()}") # Output: Initial speed: 0
my_car.accelerate(30)
print(f"Speed after acceleration: {my_car.get_speed()}") # Output: Speed after acceleration: 30
my_car.brake(10)
print(f"Speed after braking: {my_car.get_speed()}") # Output: Speed after braking: 20
Concepts Behind the Snippet
self keyword is essential for differentiating between the object's attributes and local variables within the method.
Real-Life Use Case Section
Player class. Each player in the game is an object of the Player class. The attributes could include health, position, inventory. The methods could include move, attack, take_damage. Creating multiple Player objects allows you to manage the state and behavior of each player independently.
Best Practices
__init__ method.
Interview Tip
__init__ method and the self keyword. You might be asked to design a simple class and explain how you would create objects from it.
When to Use Them
Memory Footprint
del will free up the memory they occupy.
Alternatives
Pros
Cons
FAQ
-
What is the difference between a class and an object?
A class is a blueprint or template for creating objects. An object is an instance of a class. Think of a class as a cookie cutter and an object as the cookie itself. You can create many cookies (objects) from the same cookie cutter (class). -
What is the purpose of the
__init__method?
The__init__method is the constructor of a class. It's automatically called when a new object of the class is created. Its primary purpose is to initialize the object's attributes. -
What does the
selfkeyword represent?
Theselfkeyword refers to the instance of the class being created. It allows you to access the object's attributes and methods within the class. It's the first parameter of instance methods and must be included in the method definition. -
How do I access an object's attributes?
You can access an object's attributes using the dot notation:object.attribute_name. For example, if you have aDogobject namedmy_dogand it has anameattribute, you can access the name usingmy_dog.name.