naseeam
asked on
Why overridden method didn't get called?
I'm using Python 3.7.4
classdemo.py
inheritancedemo.py
output:
It looks like overridden calculatePay( ) didn't get called because John's pay doesn't include allowance. Why John's pay doesn't include allowance?
classdemo.py
#Base Class
class Staff:
def __init__ (self, pPosition, pName, pPay):
self._position = pPosition
self.name = pName
self.pay = pPay
print('Creating Staff object')
def __str__(self):
return "Position = %s, Name = %s, Pay = %d" %(self._position, self.name, self.pay)
@property
def position(self):
print("Getter Method")
return self._position
@position.setter
def position(self, value):
if value == 'Manager' or value == 'Basic':
self._position = value
else:
print('Position is invalid. No changes made.')
def calculatePay(self):
prompt = '\nEnter number of hours worked for %s: ' %(self.name)
hours = input(prompt)
prompt = 'Enter the hourly rate for %s: ' %(self.name)
hourlyRate = input(prompt)
self.pay = int(hours)*int(hourlyRate)
return self.pay
#Derived class
class ManagementStaff(Staff):
def __init__ (self, pName, pPay, pAllowance, pBonus):
super().__init__('Manager', pName, pPay)
self.allowance = pAllowance
self.bonus = pBonus
def calculatePay(self):
basicPay = super().calculatePay()
self.Pay = basicPay + self.allowance
return self.pay
def calculatePerfBonus(self):
prompt = 'Enter performance grade for %s: ' %(self.name)
grade = input(prompt)
if (grade == 'A'):
self.bonus = 1000
else:
self.bonus = 0
return self.bonus
#Derived class
class BasicStaff(Staff):
def __init__(self, pName, pPay):
super().__init__('Basic', pName, pPay)
inheritancedemo.py
import classdemo
peter = classdemo.BasicStaff('Peter', 0)
john = classdemo.ManagementStaff('John', 0, 1000, 0)
print(peter)
print(john)
print('Peter\'s Pay = ', peter.calculatePay())
print('John\'s Pay = ', john.calculatePay())
print('John\'s Performance Bonus = ', john.calculatePerfBonus())
output:
It looks like overridden calculatePay( ) didn't get called because John's pay doesn't include allowance. Why John's pay doesn't include allowance?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Expert found root cause of the problem. Now it works!
ASKER