Python:如何在另一个方法中使用另一个方法的返回值?

时间:2018-08-09 13:15:55

标签: python methods

我想做的是从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”

3 个答案:

答案 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()