在Python

时间:2017-04-17 05:25:14

标签: 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()
  

我得到的回溯是:追溯(最近一次呼叫最后一次):
  文件" C:/用户....",第48行,in       主()
  文件" C:/ Users ....",第41行,在main中       打印("职位名称:",emp1.get_job_title())
  文件" C:/ Users ....",第29行,在get_job_title中       返回自我.__ job_title   AttributeError:'员工'对象没有属性' _Employee__job_title'

3 个答案:

答案 0 :(得分:1)

您尚未在构造函数

中声明该成员

必须改变

self.__job_title_number = job_title

self.__job_title = job_title

答案 1 :(得分:0)

__init__中,您使用self.__job_title_number = job_title,但随后在get_job_title中使用self.__job_title,此时此时尚未设置。{/ p>

您需要在所有用途中使变量名称保持一致。

答案 2 :(得分:0)

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