Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

\"Starting Out with Python (3rd Edition)\" Chapter 11 question one has a questio

ID: 3820887 • Letter: #

Question

"Starting Out with Python (3rd Edition)" Chapter 11 question one has a question and I have transcribed the solution but I cannot figure out why it is wrong. The solution I have is as follows. I keep getting the error message, "AttributeError: 'ProductionWorker' object has no attribute 'get_emp_name'"

class Employee:
def __init__(self, name, number):
self.__name = name
self.__number = number

#set methods
def set_name(self,name):
self.__name = name
def set_number(self,number):
self.__number = number

#get methods
def get_name(self):
return self.__name
def get_number(self):
return self.__number


class ProductionWorker(Employee):
def __init__(self, name, number, shift_num, pay_rate):
Employee.__init__(self, name, number)
self.__shift_num = shift_num
self.__pay_rate = pay_rate

#set methods
def set_shift_num(self,shift_num):
self.__shift_num = shift_num
def set_pay_rate(self,pay_rate):
self.__pay_rate = pay_rate

#get methods
def get_shift_num(self):
return self.__shift_num
def get_pay_rate(self):
return self.__pay_rate

def main():
print('Please enter the following details.')
name = input('Name:')
number = input('Employee Number:')
sh = input('Shift Number:')
pay_rate = input('Pay Rate:')
emp = ProductionWorker(name, number, sh, pay_rate)

print('Here is the employee information:')
print('Name:',emp.get_emp_name())
print('Employee Number:',emp.get_emp_number())
print('Shift Number:',emp.get_shift_num())
print('Pay Rate:',emp.get_pay_rate())

main()

Explanation / Answer

PROGRAM CODE:

class Employee:
def __init__(self, name, number):
self.__name = name
self.__number = number
#set methods
def set_name(self,name):
self.__name = name
def set_number(self,number):
self.__number = number
#get methods
def get_name(self):
return self.__name
def get_number(self):
return self.__number

class ProductionWorker(Employee):
def __init__(self, name, number, shift_num, pay_rate):
Employee.__init__(self, name, number)
self.__shift_num = shift_num
self.__pay_rate = pay_rate
#set methods
def set_shift_num(self,shift_num):
self.__shift_num = shift_num
def set_pay_rate(self,pay_rate):
self.__pay_rate = pay_rate
#get methods
def get_shift_num(self):
return self.__shift_num
def get_pay_rate(self):
return self.__pay_rate
def main():
print('Please enter the following details.')
name = input('Name:')
number = input('Employee Number:')
sh = input('Shift Number:')
pay_rate = input('Pay Rate:')
emp = ProductionWorker(name, number, sh, pay_rate)
print('Here is the employee information:')
print('Name:',emp.get_name()) # function name was wrong here
print('Employee Number:',emp.get_number()) # function name was wrong here
print('Shift Number:',emp.get_shift_num())
print('Pay Rate:',emp.get_pay_rate())
main()

OUTPUT: