我想做的是从abcd方法中获得一个返回值,并将该值用作fname的替代品,并且错误继续发生。
我该如何解决此错误?
ICB164000395.txt有四行。 我想要line_count打印出4(文本文件中的行数)
class Test():
def abcd(self):
self.a = a
a = 'ICB164000395.txt'
return a
def line_count(self, fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
print(i + 1)
t = Test()
t.line_count(abcd())
并且错误显示如下
回溯(最近通话最近): 在第16行的文件“ C:\ Users \ mg \ Desktop \ Tubuc \ openAPI \ test9.py” t.line_count(abcd(fname)) NameError:未定义名称“ abcd”
答案 0 :(得分:1)
只看功能:
def abcd(self):
self.a = a
a = 'ICB164000395.txt'
return a
我猜你在self.a = a
遇到了一个错误..因为a尚未定义。也没有传入。
我认为您想要的是:
class Test():
def abcd(self):
a = 'ICB164000395.txt' # you'll need to correct the path to this file
return a
def line_count(self, fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
print(i + 1)
t = Test()
t.line_count(t.abcd())
答案 1 :(得分:0)
abcd
是一个实例方法,因此您必须从您的类的实例中调用它
t = Test()
t.line_cont(t.abcd())
您的abcd
方法在定义之前也使用了变量a
,因此您可以将其更改为
def abcd(self):
self.a = 'ICB164000395.txt'
return self.a
答案 2 :(得分:0)
似乎从abcd方法获得的内容通常在init中处理。您可以在实例化Test对象时设置文件名。然后,您可以调用行数。您的line_count方法还应指定如何以读取模式打开文件“ r”。
class Test():
def __init__(self, file_name):
self._file_name = file_name
def line_count(self):
with open(self._file_name, 'r') as f:
for i, l in enumerate(f):
pass
return i + 1
print(i + 1)
t = Test('ICB164000395.txt')
t.line_count()