2017-04-17 88 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