2017-04-17 54 views
-1

我知道在Python属性错误上有一些帖子,但我找不到任何东西来帮助解决我的问题或如何解决它。这里是我的代码:在Python中获取属性错误

class Employee: 
    def __init__(self, name, ID_number, dept, job_title): 
     self.__name = name 
     self.__ID_number = ID_number 
     self.__dept = dept 
     self.__job_title_number = job_title 

    #set methods 
    def set_name(self,name): 
     self.__name = name 
    def set_ID_number(self,ID_number): 
     self.__ID_number = ID_number 
    def set_dept(self,dept): 
     self.__dept = dept 
    def set_job_title(self,job_title): 
     self.__job_title = job_title 


    #get methods  
    def get_name(self): 
     return self.__name 
    def get_ID_number(self): 
     return self.__ID_number 
    def get_dept(self): 
     return self.__dept 
    def get_job_title(self): 
     return self.__job_title 

def main(): 

    emp1 = Employee("Susan Myers", 47899, "Accounting", "Vice President") 
    emp2 = Employee("Mark Jones", 39119, "IT", "Programmer") 
    emp3 = Employee("Joy Rogers", 81774, "Manufacturing", "Engineer") 

    print("Information for employee 1:") 
    print("Name:",emp1.get_name()) 
    print("ID:",emp1.get_ID_number()) 
    print("Department:",emp1.get_dept()) 
    print("Job Title:",emp1.get_job_title()) 

main() 

The traceback that I get is: Traceback (most recent call last):
File "C:/Users....", line 48, in main()
File "C:/Users....", line 41, in main print("Job Title:",emp1.get_job_title())
File "C:/Users....", line 29, in get_job_title return self.__job_title AttributeError: 'Employee' object has no attribute '_Employee__job_title'

+1

getter和Python中不需要setter方法。 – jordanm

回答

0

__init__,您使用self.__job_title_number = job_title,但随后在get_job_title你使用self.__job_title,在这个点还没有确定。

您需要让所有用途的变量名一致。

0

在你的班级的init函数中,你的职位名称为self.__job_title_number,但是在getter函数中你返回self.__job_title。你必须改变其中的一个,所以它们是相同的。

1

您还没有宣布在构造

会员必须改变

self.__job_title_number = job_title 

self.__job_title = job_title