我正在尝试将对象添加到python中的数组中,然后打印数组的内容[重复]
Posted
技术标签:
【中文标题】我正在尝试将对象添加到python中的数组中,然后打印数组的内容[重复]【英文标题】:I'm trying to add objects to an array in python and then print the contents of the array [duplicate] 【发布时间】:2018-10-05 02:49:59 【问题描述】: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>
我希望它实际打印出值,而不仅仅是它在内存中的位置...我该怎么做?
【问题讨论】:
您需要在您的Employee
类中添加一个__str__
方法。见here。此外,您的代码看起来更像 Java 而不是 Python。我建议寻找here
你的Employee
类有很多不必要的混乱,尤其是对于 MCVE。摆脱所有 getter/setter 方法并使用常规属性名称。
【参考方案1】:
要打印对象,您需要为其字符串表示形式提供定义。然后,您在 __str__()
覆盖中描述了这一点:
例如,你的可能是这样的:
class Employee
... # other functions
def __str__(self):
return ", , ".format(self.__name, self.__id_number, self.__department)
显然,您可以根据需要决定对其进行格式化。
此外,您应该查找 @property
装饰器,这样您就不需要制作自己的 getter 和 setter,但这不是您的问题。
【讨论】:
在自定义类中,__str__()
不是覆盖。
@wwii 如果你在任何类上调用dir(cls)
,你可以看到一个类的可调用属性之一是__str__
。也许override
不是正确的术语,你会说它是什么?
我明白你的意思,我会删除我的评论。我想我不这么认为——我认为它是为一个类定义一个__str__
方法,而不是覆盖type
的__str__
方法。【参考方案2】:
为您的对象定义一个__str__
方法。当对象用于需要字符串的上下文(通常为print
)时,Python 会自动调用此方法。
例如:
class Employee:
def __str__(self):
return self.__name
【讨论】:
以上是关于我正在尝试将对象添加到python中的数组中,然后打印数组的内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为JSON对象中的每个数组添加一个(子)按钮元素到div,并为数组中的每个对象添加子按钮(到数组按钮)