我正在尝试使用Map来引用类函数,但是在格式化/排序方面遇到了困难。我听说使用map有点过时,所以我绝对愿意接受替代解决方案(for loops?)提前谢谢。
lognames = [ "C:\Users\makker1\Desktop\logs\loga.txt",
"C:\Users\makker1\Desktop\logs\logb.txt",
"C:\Users\makker1\Desktop\logs\logc.txt" ]
class LogFile:
def __init__(self,filepath):
self.logfile = open(filepath, "r")
self.head = None
def __str__(self):
return "x=" + str(self.x) + "y="+str(self.y)
def readline (self):
if self.head != None:
self.head = self.logfile.readline()
def previewline (self):
if self.head == None:
self.head = self.logfile.readline()
def close (self):
self.logfile.close()
logs = map(LogFile(self,filepath).__init__(), lognames)
heads = map(lambda log: None, logs)
>>>
Traceback (most recent call last):
File "C:\Users\makker1\Desktop\mergesort-final.py", line 30, in <module>
logs = map(LogFile(self,filepath).__init__, lognames)
NameError: name 'self' is not defined
>>>
如果需要更多信息,请告知我们。我意识到有很多关于这个问题的帖子,并且通过其中许多问题进行了分类,但没有结果。
答案 0 :(得分:4)
这是列表理解答案。我比map()
更喜欢这个。
logs = [LogFile(fname) for fname in lognames]
答案 1 :(得分:2)
您无需明确致电__init__
。尝试:
logs = map(LogFile, lognames)
有时将一个类视为 callable 是有帮助的。您可以将课程视为以下内容:
def LogFile(filepath):
class _LogFile:
def __init__(self, path):
...
return _LogFile(filepath)
基本上,类可以被认为是您调用以创建对象实例的东西。这不是真的,但在很多情况下它似乎是。