我正在尝试创建一个Python程序,该程序创建一个可以保存信息并使用联系人对象执行操作的类。基本上它就像一个手机,你可以输入名称,地址,电话,年龄和类型的数据(如家庭,工作,朋友等)我是Python新手,我不太熟悉类。
我想出了像
这样的东西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文件看起来像
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是联系人的数量。
谢谢!
答案 0 :(得分:0)
你正在使用的东西可能是可行的,但更像是这样:
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)]]
如上所述,最后一行确实使用了一些嵌套列表推导。这相当于:
Contacts = []
for j in range(count):
fields = []
for i in range(5):
fields.append(next(fh))
Contacts.append(Contact(*fields))