class paul(list):
def __init__(self, file, border):
self.list=[]
self.file = open(file)
instance=self.file.readlines()
instant= instance[1:]
for i in instant:
self.list.append(otherclass(i,border))
基本上我正在创建一个类paul
,我想要读取文件中的每一行,然后我只想显示除第一行之外的每一行(这就是instant
正在做的事情)。然后我想调用otherclass
构造函数并传递每一行,并将每个对象追加到self.list
。
所以,当我说x=paul(file)
时,我可以说print x
,它将打印包含所有对象的列表。
我发布的声明是正确的,因为当我说print i
而不是self.list.append
时,它会根据otherclass
中指定的格式打印每一行。现在,当我说print x
时,它只是打印一个空列表。
答案 0 :(得分:1)
print paul(file)
输出空列表,因为您从paul
继承list
,但不向其添加任何内容。
试试这个:
class paul(list):
def __init__(self, file, border):
self.file = open(file)
instance = self.file.readlines()
instant = instance[1:]
for i in instant:
# Append to self, since you're inheriting the class
# from list
self.append(otherclass(i,border))
<强>更新强>
要按每个元素的第三项对paul
进行排序,只需调用
self.sort(key=lambda x: x[2])
在课堂内。您可以将任何排序谓词指定为key
参数。
答案 1 :(得分:0)
更简洁的方法:
class Paul(list):
def __init__(self, file, border):
with open(file) as inf:
# skip first line
next(self.file, None)
self.lines = [OtherClass(line, border) for line in inf]
def __str__(self):
return "[\n {}\n]".format(",\n ".join(str(oc) for oc in self.lines))