我有一个名为Name的类,它带有名字和名字,只有几个基本功能:
class Name:
def __init__(self, first, last):
self._first = first
self._last = last
def first(self):
return self._first
def last(self):
return self._last
def __repre__(self):
print("{} {}".format(self._first, self._last))
现在我需要创建一个函数,该函数获取一个返回Name对象列表的列表。 Text_file只是一个文本文件,其名称逐行显示,名字和姓氏之间的空格。
def name_list(text_file):
with open(text_file) as f:
lines = f.read().splitlines()
for name in lines:
print(lines)
我意识到我只采取了列表并返回了列表中的名称,而不是列表作为Name对象。
如何使用我的类返回名称对象列表?
答案 0 :(得分:0)
def name_list(text_file):
file = open(text_file, 'r')
list = []
for line in file:
first, last = line.split()
list.append(Name(first, last))
return list
这将遍历每一行,在空格上分解,创建一个名称对象,将其添加到列表中,然后返回列表。
然后打印出来做类似的事情:
list = name_list(file)
for name in list:
print('Name: {0} {1}'.format(name._first, name._last))
答案 1 :(得分:0)
最简单的方法就是在白色空间上分割每一行。你在上面有一些冗余的东西:你可以简单地迭代一个文件一行一行 - 不需要调用readlines。
def name_list(text_file):
names = []
with open(text_file) as f:
for line in f:
first_name, last_name in line.split(' ') # tuple unpacking
names.append(Name(first_name, last_name))
return names
答案 2 :(得分:0)
认为在Python中展示如何将其作为一个单行程可能会很酷。我知道新手可能会有点不那么可读,因此,可能不应该是接受的答案,但值得了解:
>>> names = [Name(*line.split()) for line in open(text_file)]
基本上,我们遍历文本文件中的每一行,在空格上拆分,然后我们使用*
- 运算符将值解压缩为类的位置参数。
答案 3 :(得分:0)
另一种可能的解决方案:
name_objects = list()
with open(text_file) as f:
for each_line in f:
name_objects.append(Name(each_line.split()))