Creating list of Class Objects
我正在尝试创建一个python程序,该程序创建一个类,该类可以保存信息并使用contact对象执行操作。基本上,它就像一部手机,你可以输入名字、地址、电话、年龄和类型(比如家庭、工作、朋友等)的数据。我对python很陌生,对课程也不太熟悉……
我想出了一个
1 2 3 4 5 6 7 8 9 10 11 12 | CONTACTS = open ("contacts.txt","r") CONTACT_DATA = CONTACTS.read() class Contacts(CONTACT_DATA): def __init__(CONTACT_DATA, Name="Unavailable", Address="Unavailable", Phone="Unavailable", Age=0, Type=None ): CONTACT_DATA.Name = Name CONTACT_DATA.Address = Address CONTACT_DATA.Phone = Phone CONTACT_DATA.Age = Age CONTACT_DATA.Type = Type |
但我一直在研究如何将字符串赋给变量。我知道我应该使用"set"和"get"方法…
contacts.txt文件看起来像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 3 Albert Einstein 27 Technology Drive 25 555-555-1212 WORK Sally Field 48 Friendly Street 22 555-555-8484 FRIEND Marvin Gaye 191 Apple Mountain Road 30 555-555-2222 RELATIVE |
3是触点数。
谢谢您!
你的工作可能可行,但更像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Contact(object): def __init__(self, name, address, age, phone, ctype): self.name = name, self.address = address self.age = age self.phone = phone self.ctype = ctype # Read off the first line of your data file. fh = open('contacts.txt') count = int(fh.readline()) Contacts = [Contact(*c) for c in [[next(fh) for i in range(5)] for j in range(count)]] |
如前所述,最后一行确实使用了一些嵌套的列表理解。这相当于:
1 2 3 4 5 6 | Contacts = [] for j in range(count): fields = [] for i in range(5): fields.append(next(fh)) Contacts.append(Contact(*fields)) |