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 branchName

Git 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_number

Create 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 ticket1

Access 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 directly

Next-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

Python 15

By Content ITV

Python 15

  • 62