Advanced OOP Concepts
Business Scenario
Welcome!
Today is your 15th day as a Junior Data Analyst at the Indian Railways Reservation Department.
Previously you learned how to create Classes and Objects using Object-Oriented Programming concepts.
Today, your manager wants you to improve the system further by automating the application to initialize passenger and train information automatically whenever new reservation objects are created.
To complete this task successfully, you must use Python to:
Improve code automation
Build scalable reservation modules
Pre-Lab Preparation
git pull origin branchNameGit Pull
Topic: Advanced OOP Concepts
1) Create Constructor
2) Create Destructor
Click here for previous lab : Python Lab 14
Constructor :
A constructor is a special method that runs automatically when an object is created
It is used to initialize object data
class Car:
def __init__(self):
print("Constructor Called")
car1 = Car()What is Constructor and Destructor
class Car:
def __init__(self, company, color):
self.company = company
self.color = color
def show(self):
print(self.company)
print(self.color)
car1 = Car("Tesla", "Red")
car1.show()__init__() → Constructor
Runs automatically when car1 object is created
Constructor with Attributes :
Constructor assigns values to attributes
self.company and self.color are attributes
Destructor
A destructor is a special method that runs automatically when an object is destroyed.
class Car:
def __del__(self):
print("Destructor Called")
car1 = Car()
del car1__del__() → Destructor
Runs when object is deleted using del
1
Task 1: Create Constructor
Create Railway Reservation Class using Constructor
class RailwayReservation:
def __init__(
self,
passenger_name,
train_name,
seat_number
):
self.passenger_name = passenger_name
self.train_name = train_name
self.seat_number = seat_numberCreate reservation object
2
ticket1 = RailwayReservation(
"Rahul Sharma",
"Rajdhani Express",
"A1-21")Display reservation details
3
print(ticket1.passenger_name)
print(ticket1.train_name)
print(ticket1.seat_number)Output
4
Create Reservation Class
1
Task 2: Handle Multiple Reservation Object
class Reservation:
def __init__(
self,
passenger_name,
seat_number
):
class Reservation:
def __init__(
self,
passenger_name,
seat_number
):
self.passenger_name = passenger_name
self.seat_number = seat_number
def display_ticket(self):
print("Passenger :", self.passenger_name)
print("Seat Number :", self.seat_number)
print("-----------------------------------")Create multiple reservation objects
2
ticket1 = Reservation(
"Rahul Sharma",
"B1-21")
ticket2 = Reservation(
"Priya Singh",
"B1-22")
ticket3 = Reservation(
"Amit Verma",
"B1-23")Display reservation details
3
ticket1.display_ticket()
ticket2.display_ticket()
ticket3.display_ticket()Output
4
Task 3: Build Final System & Use Destructor
Create Railway Reservation Class
1
class RailwayReservation:
def __init__(
self,
passenger_name,
train_name,
seat_number,
ticket_price):
self.passenger_name = passenger_name
self.train_name = train_name
self.seat_number = seat_number
self.ticket_price = ticket_price
print("Reservation Created Successfully")
def display_ticket(self):
print("===================================")
print(" Railway Reservation Ticket ")
print("===================================")
print("Passenger Name :", self.passenger_name)
print("Train Name :", self.train_name)
print("Seat Number :", self.seat_number)
print("Ticket Price :", self.ticket_price)
def __del__(self):
print("Reservation Cancelled")Create Object
2
ticket1 = RailwayReservation(
"Neha Kapoor",
"Rajdhani Express",
"A1-25",
2450)Display reservation ticket
3
ticket1.display_ticket()Save File as : advanced_oop.ipynb
5
Delete Reservation Object
4
del ticket1Access Modifiers in Python
An access modifier is a keyword used in object-oriented programming that defines where a class, method, or variable can be accessed from in a program.
Why access modifiers are used:
To protect data from unwanted changes
To control how code is used
To improve security and structure of programs
Common Access Modifiers:
1. Public
a) Accessible from anywhere in the program
2. Private
a) Accessible only inside the same class
3. Protected
a) Accessible within the same class and its subclasses (inherited classes)
class Car:
def __init__(self):
self.brand = "BMW" # public
self._model = "X1" # protected (convention)
self.__price = 5000000 # private
c = Car()
print(c.brand) # allowed
print(c._model) # allowed but not recommended
print(c.__price) # not accessible directlyNext-Lab Preparation
Topic: Validate Data Using Regular Expressions
1) Validate ticket format
2) Extract patterns
Great job!
You have successfully learned automated initialization using Constructor and Destructor in OOP for smooth management of train and passenger information
Checkpoint
Git Push
git push origin branchName