2017-04-19 15 views
0

私はPythonでAttributeErrorを取得していますが、その理由を理解できません。私はPythonに新しくなっているので、バーは私を悩ますほど高くはありません。私は、エラーメッセージを取得しておいてください。ここではPythonのエラーメッセージ:AttributeError

print('Name:',emp.get_emp_name())

AttributeError: 'ProductionWorker' object has no attribute 'get_emp_name'

は私のコードです:

print('Name:',emp.get_emp_name()) 
print('Employee Number:',emp.get_emp_number()) 

へ:この2

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() 
+4

、あなたは( 'emp.get_nameを呼び出す必要があります)' – Bakuutin

+0

が質問に – Eliethesaiyan

+0

定義ゲッターとセッターをERROを追加することは、Pythonで不要です。 – jordanm

答えて

2

オブジェクトを呼び出すことができます独自のクラスで定義されたメソッドだけが定義されています親クラスに定義されているメソッドまたはメソッドである必要があります。ここで

、あなたはクラスProductionWorkerにもその親クラスEmployeeに定義されていないもされていないメソッドget_emp_name()を呼び出しています。あなたはそれを変更することができます

:おそらく

print('Name:',emp.get_name()) 
1

変更

print('Name:',emp.get_name()) 
print('Employee Number:',emp.get_number()) 
関連する問題