【发布时间】:2014-08-21 14:27:59
【问题描述】:
请帮我看看我在下面缺少什么。我首先创建了我班级的三个对象并将它们添加到集合列表中。在创建任何其他对象之前,我想 检查 以确保该人不存在于列表中。如果该人已经存在,则不应再次创建该人。我希望通过if prompt_fname == person.fname and prompt_lname == person.lname: 来实现这个检查。显然,我没有正确执行它,因为程序仍然运行并创建了列表中已经存在的同一个人。它两次创造了这个人。我如何修改才能捕捉到这一点,以便不再创建列表中已经存在的人。此外,不应在循环的每次迭代中一次又一次地创建任何新人。我是编程新手,所以请不要在答案中遗漏太多细节。非常感谢。
class Person(object):
personslist = []
'''Creates a person object'''
def __init__(self, firstname, lastname):
self.lname = lastname.title()
self.fname = firstname.title()
Person.personslist.append(self)
def __str__(self):
return "{0} {1}".format(self.fname, self.lname)
def __repr__(self):
return "{0} {1}".format(self.fname, self.lname)
Person("Adamu", "Emeka")
Person("Femi", "Ojukwu")
Person("Wole", "Jonathan")
prompt_fname = "Adamu"
prompt_lname = "Emeka"
print(Person.personslist)
for person in Person.personslist:
if prompt_fname == person.fname and prompt_lname == person.lname:
pass
else:
Person(prompt_fname, prompt_lname)
print(Person.personslist)
产量
[Adamu Emeka, Femi Ojukwu, Wole Jonathan]
[Adamu Emeka, Femi Ojukwu, Wole Jonathan, Adamu Emeka, Adamu Emeka]
使用 Python 3.4.1
【问题讨论】:
-
随着您添加新人,您的列表会不断增加
-
我没看到。应该使用下面的答案中指出的标志。感谢您的回答:简洁。
标签: python for-loop python-3.x