您好我正在尝试调用我的类的实例,但不知道该怎么做,在这个阶段它只有在我预先指定newContact中的所有内容并忽略类AddContact时才有效。我想能够将新的联系人列入名单吗?请帮忙。
我的代码:
class People():
def __init__(self, name, surname, age, mobile_no, home_no):
self.name = name
self.surname = surname
self.age = age
self.mobile_no = mobile_no
self.home_no = home_no
def DisplayContacts(self):
print("First Name: \t", self.name)
print("Surname: \t", self.surname)
print("Age: \t", self.age)
print("Mobile Number: \t", self.mobile_no)
print("Home Number: \t", self.home_no)
class AddContact():
newname = str(input("First name: \t"))
newsurname = str(input("Surname: \t"))
newage = int(input("Age: \t"))
newmobile_no = int(input("Mobile Number: \t"))
newhome_no = int(input("Home Number: \t"))
newContact = People(newname, newsurname, newage, newmobile_no, newhome_no)
newContact = People()
for p in newContact():
p.DisplayContacts()
答案 0 :(得分:1)
如果你想建立一个联系人列表,而不是AddContact
作为一个类,那就把它变成一个函数:
def add_contact():
newname = str(input("First name: \t"))
newsurname = str(input("Surname: \t"))
newage = int(input("Age: \t"))
newmobile_no = int(input("Mobile Number: \t"))
newhome_no = int(input("Home Number: \t"))
newContact = People(newname, newsurname, newage, newmobile_no, newhome_no)
return newContact
然后,您可以创建list
个联系人:
contacts = []
contacts.append(add_contact())
contacts.append(add_contact())
最后,通过迭代显示list
中的联系人:
for p in contacts:
p.DisplayContacts()
答案 1 :(得分:1)
这里的基本问题是你假设People
类将作为一个容器类型来容纳多个联系人,而你已经写成了一个只保留属性的类。 单联系。
您的代码的实际目标尚不清楚。您可以在将People
类视为单个联系人及其集合之间来回切换:
在__init__
功能中,您准备对象以存储单个联系人(一个人有一个姓名,年龄等)
class People():
def __init__(self, name, surname, age, mobile_no, home_no):
self.name = name
self.surname = surname
self.age = age
self.mobile_no = mobile_no
self.home_no = home_no
此函数虽然名为DisplayContacts
(复数),但也将对象视为存储单个联系人:
def DisplayContacts(self):
print("First Name: \t", self.name)
print("Surname: \t", self.surname)
print("Age: \t", self.age)
print("Mobile Number: \t", self.mobile_no)
print("Home Number: \t", self.home_no)
我不太清楚这是什么。我认为你的意思是在这里创建一个函数而不是一个类,所以我要改变它。现在,您已阅读新联系人的信息并将其存储在People
类的新实例中:
# was class AddContact(), which makes no sense:
def AddContact():
newname = str(input("First name: \t"))
newsurname = str(input("Surname: \t"))
newage = int(input("Age: \t"))
newmobile_no = int(input("Mobile Number: \t"))
newhome_no = int(input("Home Number: \t"))
newContact = People(newname, newsurname, newage, newmobile_no, newhome_no)
现在对于主程序:通过实例化奇怪命名的People
类来创建单个联系人。然后尝试将此对象称为函数(???)。这会导致错误,因为您尚未定义__call__
方法,但它可能不是您首先想要做的事情。最后,您尝试将该结果用作迭代器。我不知道目的是什么:
newContact = People()
# will cause an error: no People.__call__ method
result_of_calling_object_like_a_function = newContact()
# would cause another error, unless the object in question has an
# __iter__ method:
for p in result_of_calling_object_like_a_function:
p.DisplayContacts()
答案 2 :(得分:0)