创建类对象列表

时间:2013-04-22 17:07:55

标签: python list class python-3.x

我正在尝试创建一个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是联系人的数量。

谢谢!

1 个答案:

答案 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))