0% found this document useful (0 votes)
5 views32 pages

9 Inheritance

Uploaded by

Manglya Vasule
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views32 pages

9 Inheritance

Uploaded by

Manglya Vasule
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

Python | CCIT

1
Python | CCIT

Table of Contents
Inheritance ........................................................................... 3
Inheritance .......................................................................... 3
Method Overriding ............................................................. 9
Calling base class overrided method in derived class ...... 12
Super() function ................................................................ 15
Types of Inheritance .......................................................... 18
Single level Inheritance ..................................................... 18
Multi-level Inheritance ..................................................... 18
Hierarchical Inheritance ................................................... 18
Multiple Inheritance ......................................................... 18
Hybrid Inheritance ............................................................ 19
Method Resolution Order ................................................. 29

2
Python | CCIT

Inheritance
 It is a technique of deriving new classes from
existing classes.
 The derived class inherits all features of base class
from which it is derived.
 In the derived class we only need to define
additional features or the changes that we
require.
 So by using this technique we can reuse our
existing code.
 This is called as code reusability.

Inheritance
 A new class can be derived by providing list of base class names from which
we want to derive.
Syntax:
class DerivedClassName(Base1,Base2,. . ):
Methods
-------------
-------------

NOTE:
 Every class in Python is derived from the class object.
 If base class name is not provided then that classs is
derived from class object.

3
Python | CCIT

Design a class circle: data members r, member functions area( ) , setradius( ).


Then derive a new class xcircle from circle: memberfunction circumference( ).

class circle:
def setradius(self,r):
self.r=r
def area(self):
a=3.14*self.r**2
print("Area is ",a)

class xcircle(circle):
def circumference(self):
c=2*3.14*self.r
print("circumference is ",c)
a=circle()
a.setradius(5)
a.area()
b=xcircle()
b.setradius(2)
b.area()
b.circumference()

Area is 78.5
Area is 6.28
Circumference is 6.28

4
Python | CCIT

Design a class Employee data member name, salary, advance, member functions
setdata (n,s ,a), showdata( )
Then derive a new class AEmployee from Employee: Member functions Payment()

class Employee:
def setData(self,n,s,a):
self.name=n
self.salary=s
self.advance=a
def showData(self):
print("Name is ",self.name)
print("Salary is ",self.salary)
print("Advance is ",self.advance)

class AEmployee(Employee):
def payment(self):
p=self.salary - self.advance
print("Payment is ",p)
a=Employee()
a.setData("Amit",25000,5000)
a.showData()

b=AEmployee()
b.setData("Gopal",40000,500)
b.showData()
b.payment()
5
Python | CCIT

Name is Amit
Salary is 25000
Advance is 5000
Name is Gopal
Salary is 40000
Advance is 500
Payment is 39500

Design a class Account data members: accno, balance, member function:


open(a,bl), deposit( amt ), withdraw( amt ), showBalance( ). Then derive a new
class SAaccount from Account : member function :addInterest(r ,n)

class Account:
def open(self,an,bl):
self.accno=an
self.bal=bl
def deposit(self,amt):
self.bal=self.bal+amt
def withdraw(self,amt):
self.bal=self.bal-amt
def showBalance(self):
print("AccNo is ",self.accno)
print("Bal is ",self.bal)
class SAccount(Account):
def addInterest(self,r,n):
si=self.bal*r*n/100
self.bal=self.bal+si
6
Python | CCIT

a=Account()
a.open(4117,25000)
a.deposit(3000)
a.withdraw(8000)
a.showBalance()

b=SAccount()
b.open(3012,10000)
b.deposit(40000)
b.showBalance()
b.addInterest(10.25,3)
b.showBalance()

AccNo is 4117
Balance is 20000
AccNo is 3012
Balance is 50000
AccNo is 3012
Balance is 65375.50

7
Python | CCIT

Design a Class Rectangle Data members: Length, Breadth Member functions


setDimension( l ,b ) , area(). Then derive a new class Arectangle from Rectangle
Member functions: perimeter().

class Rectangle :
def setDimension(self,x,y):
self.length = x
self.breadth = y
def area(self):
a=self.length * self.breadth
print("Area is ",a)
class ARectangle(Rectangle):
def perimeter(self):
p=2*(self.length + self.breadth)
print("Perimeter is ",p)

a = Rectangle()
a.setDimension(5,7)
a.area()
b = ARectangle()
b.setDimension(10,20)
b.area()
b.perimeter()

Area is 35
Area is 200
Perimeter is 60
8
Python | CCIT

Method Overriding
 Redefining a base class method in derived class is called as method overriding.
 The overrided method must have same name as base class method.
 This overrided method will be call for derived class object instead of base class
inherited method.

Design a class Box Data members: L, B, H, Member functions: Setdata(x ,y ,z),


Volume(), surfaceArea(). Then derive a new class OpenBox from class Box Member
functions: SurfaceArea( ).

class Box:
def setdata(self,x,y,z):
self.L=x
self.B=y
self.H=z
def volume(self):
v=self.L*self.B*self.H
print("Volume is ",v)
def surfacearea(self):
a=2*self.L*self.H+2*self.B*self.H+2*self.L*self.B
print("SurfaceArea is ",a)

class OpenBox(Box):
def surfacearea(self):
a=2*self.L*self.H+2*self.B*self.H+self.L*self.B
print("SurfaceArea is ",a)
9
Python | CCIT

a=Box()
a.setdata(2,2,2)
a.volume()
a.surfacearea()
b=OpenBox()
b.setdata(1,1,1)
b.volume()
b.surfacearea()

Volume is 8
Surface Area is 24

Volume is 1
Surface Area is 5

Design a class Account data members: accno, balance, member functions:


open(an,bl), deposit( amt ), withdraw( amt ), showBalance( ). Then derive a new
class CAaccount from Account which will charge 1 rupee for each transaction. i.e
override deposit and withdraw methods Member functions: deposit(amt),
withdraw( amt )

class Account:
def open(self,an,bl):
self.accno=an
self.balance=bl
def deposit(self,amt):
self.balance=self.balance+amt
def withdraw(self,amt): 10
Python | CCIT

self.balance=self.balance-amt
def showBalance(self):
print("AccNo is ",self.accno)
print("Balance is",self.balance)

class CAccount(Account):
def deposit(self,amt):
self.balance=self.balance+amt
self.balance=self.balance -1
def withdraw(self,amt):
self.balance=self.balance-amt
self.balance=self.balance -1

a=Account()
a.open(4117,25000)
a.deposit(3000)
a.withdraw(8000)
a.showBalance()

b=CAccount()
b.open(3012,10000)
b.deposit(5000)
b.withdraw(2000)
b.withdraw(3000)
b.showBalance()
11
Python | CCIT

AccNo is 4117
Balance is 20000

AccNo is 3012
Balance is 9997

Calling base class overrided method in derived class


 If required a base class function can be call from derived class.
Syntax:
BaseClassName.methodName(self,arg1,..)

NOTE: The first argument must be self.


Example:

class Account:
def open(self,an,bl):
self.accno=an
self.balance=bl
def deposit(self,amt):
self.balance=self.balance+amt
def withdraw(self,amt):
self.balance=self.balance-amt
def showBalance(self):
print("AccNo is ",self.accno)
print("Balance is",self.balance)

12
Python | CCIT

class CAccount(Account):
def deposit(self,amt):
Account.deposit(self,amt)
self.balance=self.balance-1
def withdraw(self,amt):
Account.withdraw(self,amt)
self.balance=self.balance-1
a=Account()
a.open(4117,25000)
a.deposit(3000)
a.withdraw(8000)
a.showBalance()

b=CAccount()
b.open(3012,10000)
b.deposit(5000)
b.withdraw(2000)
b.withdraw(3000)
b.showBalance()

AccNo is 4117
Balance is 20000

AccNo is 3012
Balance is 9997
13
Python | CCIT

Design a Class Person Data members: Name, City, Member functions:


setData(nm,ct), showData(). Then derive a new class Student from class Person
containing additional data member rollno Data members: Rollno, Member
functions: setData(rn,nm,ct), showData()

class Person:
def setdata(self,name,city):
self.name=name
self.city=city
def showdata(self):
print("Name is ",self.name)
print("City is ",self.city)

class Student(Person):
def setdata(self,rollno,name,city):
self.rollno=rollno
Person.setdata(self,name,city)
def showdata(self):
print("RollNo is",self.rollno)
Person.showdata(self)

a=Person()
a.setdata("Amit jain","Amravati")
a.showdata()
b=Student()
b.setdata(4117,"Gopal Pandey" ,"Nagpur")
b.showdata( ) 14
Python | CCIT

Name is Amit Jain


City is Amravati

RollNo is 4117
Name is Gopal Pandey
City is Nagpur

Super( ) function
 It allows us to refer to the parent class explicitly.
 It’s useful in case of inheritance where we want to call super/base class
functions.
Syntax:
super().baseClassFnName(arg1..)

NOTE: First argument self is not required.


Example:
class Person:
def setdata(self,name,city):
self.name=name
self.city=city
def showdata(self):
print("Name is ",self.name)
print("City is ",self.city)
class Student(Person):
def setdata(self,rollno,name,city):
self.rollno=rollno 15
Python | CCIT

super().setdata(name,city)
def showdata(self):
print("RollNo is",self.rollno)
super().showdata()

a=Person()
a.setdata("Amit jain","Amravati")
a.showdata()

b=Student()
b.setdata(4117,"Gopal Pandey" ,"Nagpur")
b.showdata( )

Name is Amit Jain


City is Amravati

RollNo is 4117
Name is Gopal Pandey
City is Nagpur

16
Python | CCIT

Example:
class Person:
def __init__(self,name,city):
self.name=name
self.city=city
def showdata(self):
print("Name is ",self.name)
print("City is ",self.city)
class Student(Person):
def __init__(self,rollno,name,city):
self.rollno=rollno
super().__init__(name,city)
def showdata(self):
print("RollNo is",self.rollno)
super().showdata()

a=Person("Amit jain","Amravati")
a.showdata()
b=Student(4117,"Gopal Pandey" ,"Nagpur")
b.showdata( )

Name is Amit Jain


City is Amravati

RollNo is 4117
Name is Gopal Pandey
City is Nagpur
17
Python | CCIT

Types of Inheritance

We can derive our class from existing classes in different ways.

Single level Inheritance


 If a class is derived from a simple base class then such type of
inheritance is called as single level inheritance.

Multi-level Inheritance
 If a class is derived from a derived class then such type of
inheritance is called as multi-level inheritance.

Hierarchical Inheritance
 If multiple classes are derived from a single
base class then such type of inheritance is
called as Hierarchical inheritance.

Multiple Inheritance
 If a class is derived from a multiple base
classes then such type of inheritance is
called as multiple inheritance.

18
Python | CCIT

Hybrid Inheritance
 If mix type of inheritance is used then such type
of inheritance is called as Hybrid inheritance.

Design 3 classes Person, Employee and Manager from


given inheritance diagram.

class Person:
def __init__(self,nm,ct):
self.name = nm
self.city = ct
def showdata(self):
print("Name is ", self.name)
print("City is ", self.city)
class Employee(Person):
def __init__(self,nm,ct,jb,sl):
super().__init__(nm,ct)
self.job = jb
self.salary = sl
def showdata(self):
super().showdata()
print("Job is ",self.job)
print("Salary is ", self.salary)
19
Python | CCIT

class Manager(Employee):
def __init__(self,nm,ct,jb,sl,br):
super().__init__(nm,ct,jb,sl)
self.branch = br
def showdata(self):
super().showdata()
print("Branch is ",self.branch)

a=Person("Amit jain","Amrvati")
a.showdata()
b=Employee("Raj Rathi","Raipur","Clerk",15600)
b.showdata()
c=Manager("M.Rao","Mumbai","Sr.Mgr",45600,"SBI-Amt")
c.showdata()

Name is Amit Jain


City is Amravati

Name is Raj Rathi


City is Raipur
Job is Clerk
Salary is 15600

Name is M.Rao
City is Mumbai
Job is Sr.Mgr
Salary is 45600
Branch is SBI-Amt
20
Python | CCIT

Design 3 classes Student, Exam and Marksheet from given inheritance diagram

class Student:
def __init__(self,rn,nm,br):
self.rollno=rn
self.name = nm
self.branch = br
def showdata(self):
print("RollNo is",self.rollno)
print("Name is" ,self.name)
print("Branch is" ,self.branch)

class Exam(Student):
def __init__(self,r,n,b,*mks):
super().__init__(r,n,b)
self.marks = mks

class Marksheet(Exam):
def total(self):
t=sum(self.marks)
return t
def percentage(self):
c=len(self.marks)
p=sum(self.marks)/c
return p

21
if mk < 40 :
return "Fail"
Python | CCIT

def result(self):
for mk in self.marks:
if mk < 40 :
return "Fail"
else:
return "Pass"

a=Marksheet(4117,"Amit Jain","CSE-3",57,68,34,56,62)
a.showdata()
print("Total is",a.total())
print("Prcentage is",a.percentage())
print("Result is",a.result())

RollNo is 4117
Name is Amit Jain
Branch is CSE-3
Total is 277
Prcentage is 55.4
Result is Fail

22
Python | CCIT

Design 3 classes Person Student and Teacher from following inheritance Diagram.

class Person:
def __init__(self,nm,ct):
self.name=nm
self.city=ct
def showdata(self):
print("Name is ",self.name)
print("City is ",self.city)

class Student(Person):
def __init__(self,rn,nm,ct,br):
self.rollno=rn
super().__init__(nm,ct)
self.branch=br
def showdata(self):
print("Rollno is",self.rollno)
super().showdata()
print("Branch is",self.branch) 23
Python | CCIT

class Teacher(Person):
def __init__(self,nm,ct,*subs):
super().__init__(nm,ct)
elf.subjects=subs
def showdata(self):
super().showdata()
print("Subjects are")
for sub in self.subjects:
print(sub)
a=Person("Amit jain","Amrvati")
a.showdata()
b=Student(4117,"Raj Joshi","Nagpur","CSE-3")
b.showdata()
c=Teacher("Raja Kumar","Raipur","Hin","His","Geo")
c.showdata()

Name is Amit Jain


City is Amravati
Rollno is 4117
Name is Raj Rathi
City is Nagpur
Branch is CSE-3
Name is Raja Kumar
City is Raipur
Subjects are
Hin
His
Geo
24
Python | CCIT

Design 3 classes Person Student and Teacher from following inheritance Diagram.

class Person:
def __init__(self,nm,ct):
self.name=nm
self.city=ct
def showdata(self):
print("Name is ",self.name)
print("City is ",self.city)

class Employee(Person):
def __init__(self,nm,ct,jb,sl,ad):
super().__init__(nm,ct)
self.job=jb
self.salary=sl
self.advance=ad
def showdata(self):
super().showdata()
print("Job is ",self.job) 25

print("Salary is ",self.salary)
Python | CCIT

print("Salary is ",self.salary)
print("Advance is ",self.advance)
def payment(self):
p=self.salary-self.advance
print("payment is ",p)
class Worker(Person):
def __init__(self,nm,ct,wg,wd):
super().__init__(nm,ct)
self.wages=wg
self.wdays=wd
def showdata(self):
super().showdata()
print("Wages is ",self.wages)
print("Wdays is ",self.wdays)
def payment(self):
p=self.wages*self.wdays
print("payment is ",p)
a=Person("Amit jain","Amrvati")
a.showdata()
b=Employee("Raj Rathi","Nagpur","Clerk",25000,5000)
b.showdata()
b.payment()
c=Worker("Raja Kumar","Raipur",500,25)
c.showdata()
c.payment()
26
Python | CCIT

Name is Amit Jain


City is Amravati

Name is Raja Kumar


City is Raipur
Wages is 500
Wdays is 25
Payment is 12500

Name is Raj Rathi


City is Nagpur
Job is Clerk
Salary is 25000
Advance is 5000
Payment is 20000

Design 3 classes Person Test and Student from given Inheritance diagram.

27
Python | CCIT

class Person:
def __init__(self,name,city):
self.name=name
self.city=city
def showdata(self):
print("Name is ",self.name)
print("City is ",self.city)
class Test:
def __init__(self,subject,marks):
self.subject=subject
self.marks=marks
def showdata(self):
print("Subject is ",self.subject)
print("Marks are ",self.marks)
class Student(Person,Test):
def __init__(self,rollno,name,city,subject,marks):
self.rollno=rollno
Person.__init__(self,name,city)
Test.__init__(self,subject,marks)
def showdata(self):
print("RollNo is",self.rollno)
Person.showdata(self)
Test.showdata(self)
a=Student(4117,"Raj Rathi","Amravati","CET",55)
a.showdata()
28
Python | CCIT

RollNo is 4117
Name is Raj Rathi
City is Amravati
Subject is CET
Marks are 55

Method Resolution Order


 In the multiple inheritance scenario, any
specified attribute is searched first in the
current class.
 If not found, the search continues into
parent classes in depth-first, left-right
fashion without searching same class twice.

Accessing Methodfrom class Syntax:


self.mName(arg1,arg2..)

Accessing Base Method Syntax:


BaseClassName.mName(self,arg1.)
super().mName(arg1,arg2 . .)

29
Python | CCIT

Design 3 classes Person Employee and Programmer from given Inheritance


diagram.

class Person:
def __init__(self,n,c):
self.name=n
self.city=c
def showData(self):
print("Name is",self.name)
print("City is",self.city)

class Employee:
def __init__(self,s,a):
self.salary=s
self.advance=a
def showData(self):
print("Salary is",self.salary)
print("Advance is",self.advance)
def payment(self): 30

p=self.salary-self.advance
Python | CCIT

p=self.salary-self.advance
print("Payment is",p)

class Programmer(Person,Employee):
def __init__(self,n,c,s,a,*langs):
Person.__init__(self,n,c)
Employee.__init__(self,s,a)
self.languages=langs
def showData(self):
Person.showData(self)
Employee.showData(self)
print("Languages",self.languages)

a=Programmer("Raj Rathi","Nagpur",45500,5000,"C","C++",
"Java")
a.showData()
a.payment()

Name is Raj Rathi


City is Nagpur
Salary is 45500
Advance is 5000
Languages (C, C++, Java)
Payment is 40500

31
Python | CCIT

32

You might also like