关于python:创建类对象列表

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