我试图在python中向对象添加对象,然后打印数组的内容

时间:2018-04-24 18:23:57

标签: python arrays oop

import employee
def main():
    print('This program will create employee objects and store their information')
    print()
    ledger = []
    numOfEmployees = int(input("Enter the number of employee's to enter: "))
    for count in range(numOfEmployees):
        name = input("Enter employee's name: ")
        id_number = input("Enter employee's ID number: ")
        department = input("Enter employee's department: ")
        job_title = input("Enter employee's job title: ")
        count = employee.Employee(name, id_number, department, job_title)
        ledger.append(count)
    print("This is the list of employee's:")
    for person in ledger:
        print(person)
main()

以下是我的员工模块。我知道在模块内部制作分类帐会更有意义,但在我尝试实现之前,似乎我应该弄清楚如何更容易地做到这一点。

class Employee:
    def __init__(self, name, id_number, department, job_title):
        self.__name = name
        self.__id_number = id_number
        self.__department = department
        self.__job_title = job_title
    def set_name(self, name):
        self.__name = name
    def set_id_number(self, id_number):
        self.__id_number = id_number
    def set_department(self, department):
        self.__department = department
    def set_job_title(self, job_title):
        self.__job_title = job_title
    def get_name(self):
        return self.__name
    def get_id_number(self):
        return self.__id_number
    def get_department(self):
        return self.__department
    def get_job_title(self):
        return self.__job_title

以下是输出。

This program will create employee objects and store their information

Enter the number of employee's to enter: 1
Enter employee's name: adf
Enter employee's ID number: afd
Enter employee's department: asdf
Enter employee's job title: asdf
This is the list of employee's:
<employee.Employee object at 0x000001A96A92FF98>

我希望它实际打印出值而不仅仅是它在内存中的位置......我该怎么做?

2 个答案:

答案 0 :(得分:2)

要打印对象,您需要提供其字符串表示形式的定义。然后,您在__str__()覆盖:

中描述了这一点

例如,你的可能是:

class Employee
    ... # other functions
    def __str__(self):
        return "{}, {}, {}".format(self.__name, self.__id_number, self.__department)

显然,您可以根据需要决定格式化。

此外,您应该查找@property装饰者,这样您就不需要自己制作吸尘器和装置工具,但这不是您的问题。

答案 1 :(得分:0)

为您的对象定义__str__方法。当在期望字符串的上下文中使用对象时,Python会自动调用此方法(通常为print)。

E.g:

class Employee:
    def __str__(self):
        return self.__name