0

This is the Traceback I am getting :
Traceback (most recent call last): File "D:\School\Programming ll\Week 4\2.py", line 42, in main() File "D:\School\Programming ll\Week 4\2.py", line 38, in main print('Name: ',emp.name()) AttributeError: 'ProductionWorker' object has no attribute 'name'

Code:

class Employee(object):
    def __init__(self,name,id_number):
        self.__name = name
        self.__id_number = id_number
    def set_name(self, name):
        self. __name = name
    def set_id_number(self,id_number):
        return self.__name
    def get_id_number(self):
        return self.__id_number
class ProductionWorker(Employee):
    def __init__(self, name,id_number,shift_num,pay_rate):
        Employee.__init__(self, name, id_number)
        self.__shift_num = shift_num
        self.__pay_rate = pay_rate

    def set_shift_num(self, shift_num):
        self.__shift_num= shift_num
    def set_pay_rate(self, pay_rate):
        self.__pay_rate = pay_rate
    #accessor functions for shift_number and pay_rate
    def get_shift_num(self):
        return self.__shift_num
    def get_pay_rate(self):
        return self.__pay_rate

def main():
#get the values of employee name, number , shif_number and pay_rate from user.
    print ('Enter the following information for the employee')
    name=input('Name: ')
    id_number=input('Employee number: ')
    shift_num=input('Shift number: ')
    pay_rate=input ('Pay rate: ')

    emp = ProductionWorker(name,id_number,shift_num,pay_rate)

    print('Details of employee are shown below: ')
    print('Name: ',emp.name())
    print('Employee Number: ',emp.get_id_number())
    print('Shift Number: ',emp.get_shift_num())
    print('Pay Rate: ',emp.get_pay_rate())
main()

Please help me , I have been banging my head for hours now. Thanks

1 Answers1

1

ProductionWorker is not a member of Employee. try instead :

emp = ProductionWorker(name,id_number,shift_num,pay_rate)

You may add a method in the Employee class :

def name(self):
    return self.__name

The best way would be to use properties : https://docs.python.org/2/library/functions.html#property

Pierre Alex
  • 473
  • 2
  • 10