未定义函数错误

时间:2015-03-03 16:31:31

标签: python

我遇到了意外的错误消息,我不知道我的代码有什么问题。以下是我的代码。

在ClassA类中,定义了两个函数。 functionA已定义,用于在csv文件上写入结果。 functionA稍后将在functionB中用作分析过程的一部分。

然而,python返回我 NameError:name' functionA'未定义 有谁知道为什么?

class ClassA:
    def functionA(readDir, keyword, lst1, lst2):

        filename = os.path.join(readDir, keyword)
        filename = filename+'.csv'

        with open(filename, 'w', encoding='utf-8') as f:
            writer=csv.writer(f)
            header=['A', 'B']
            header2=['C','D']
            writer.writerow(header)
            writer.writerows(fdist1)
            writer.writerow(header2)
            writer.writerows(fdist2)


    def functionB(self, readDir, keyword):
        lst=[]
        function1()
        function2()
        function3()
        function4() 

        fdist1, fdist2=function5() 

        functionA(readDir, keyword, fdist1, fdist2)

        return fdist1, fdist2

3 个答案:

答案 0 :(得分:0)

您可以使用以下

self.functionA(readDir, keyword, fdist1, fdist2)

并使用第一个参数functionA声明self

def functionA(self, readDir, keyword, lst1, lst2):
#            ^^^^^^^

答案 1 :(得分:0)

由于functionA是类ClassA的一部分,您必须通过当前实例引用它,如下所示:

self.functionA(...)

在你的情况下,电话会是这样的:

self.functionA(readDir, keyword, fdist1, fdist2)

答案 2 :(得分:0)

通过staticmethod

演示:

class ClassA:
    @staticmethod
    def functionA():
        print "in A"

    def functionB(self, ):
        print "in B"
        ClassA.functionA()

a = ClassA()
a.functionB()

输出:

$ python csv_task.py 
in B
in A

按实例方法

类中最常用的方法是实例方法,即实例作为方法的第一个参数传递。

演示:

class ClassA:
    def functionA(self):
        print "in A"

    def functionB(self, ):
        print "in B"
        self.functionA()

a = ClassA()
a.functionB()

输出:

$ python csv_task.py 
in B
in A