An object is an instance of a class. It represents a real-world entity and contains its own data (attributes) and functions (methods) defined by the class. A single class can be used to create multiple objects, each with its own set of values.
Creating an object
An object is created by calling the class name, just like calling a function. The values passed during object creation are used to initialize the object's attributes.
Here, we create an object of the Car class and access its attributes.
class Car:
def __init__(self, model, price):
self.model = model
self.price = price
car1 = Car("R8", 100000)
print(car1.model)
print(car1.price)
Output
R8 100000
Explanation: statement Car("R8", 100000) creates a new object named car1. The __init__() method initializes the model and price attributes, which are accessed using car1.model and car1.price, respectively.
Accessing class members
Class members such as attributes and methods are accessed using the dot (.) operator. Once an object is created, it can be used to access its data and call its methods.
Example 1: Here, we create an object and call its methods to display and update its data.
class Car:
def __init__(self, model):
self.model = model
def show_model(self):
print("Model:", self.model)
def update_model(self, new_model):
self.model = new_model
car1 = Car("R8")
car1.show_model()
car1.update_model("A6")
car1.show_model()
Output
Model: R8 Model: A6
Explanation: object car1 calls the show_model() method to display the current model. After calling update_model("A6"), the value of self.model is updated, and show_model() displays the new model.
Example 2: Here, we access the attributes of multiple objects directly using the dot (.) operator.
class Student:
def __init__(self, name, marks):
self.name = name
self.marks = marks
student1 = Student("Emma", 92)
student2 = Student("Daniel", 88)
print(student1.name, student1.marks)
print(student2.name, student2.marks)
Output
Emma 92 Daniel 88
Explanation: objects student1 and student2 store different values for the name and marks attributes. These attributes are accessed directly using dot notation, such as student1.name and student2.marks.
Self keyword in objects
The self keyword refers to the current object of a class. It is used inside class methods to access and modify the attributes and methods of that object.
Here, we use the self keyword to access an object's attributes inside a method.
class Employee:
def __init__(self, name, department):
self.name = name
self.department = department
def display(self):
print(self.name, "works in", self.department)
employee = Employee("Emma", "Sales")
employee.display()
Output
Emma works in Sales
Explanation: self keyword refers to the employee object. The attributes self.name and self.department are initialized in __init__() and accessed inside the display() method.
Deleting an Object
The del keyword is used to delete an object. Once an object is deleted, it can no longer be accessed using its variable name.
Here, we delete an object using the del keyword and then try to access it.
class Employee:
def __init__(self, name):
self.name = name
employee = Employee("Emma")
del employee
print(employee.name)
Output
ERROR!
Traceback (most recent call last):
File "<main.py>", line 7, in <module>
NameError: name 'employee' is not defined. Did you mean: 'Employee'?
Explanation: statement del employee removes the reference to the object. Therefore, attempting to access employee.name raises a NameError because the variable employee no longer exists.