函数不可调用@ python3

时间:2015-01-12 20:37:56

标签: python function

我正在完成一项家庭作业,我可以使用一些帮助。我的文件名是pgreper.py。

总体目标是制作一个pyp版本的grep,它运行如下:

$ cat input.txt | ./pgreper.py“the *”

我需要制作一个debuging trace callable函数,我应该调用如下:

@CodeTrace.trace()
def matchLine(self, line):

然而,Pycharm告诉我'Trace'不可调用。

我的命令行也出错:NameError,名称'self'未定义。

有人可以帮助我理清我的功能,并帮助我让他们赎罪,提前道歉这项工作仍在进行中。

ps请在下面的代码中忽略我的评论。

#!/usr/bin/python3

import sys
import re
import time
import datetime
import inspect
import getopt


class Grepper(object):
    def __init__(self, pattern):
        self.pattern = pattern

    @CodeTrace.Trace(self, line)
    def matchline(self):
        regex = re.compile(self.pattern)
        for line in sys.stdin:
            if regex.search(line):
                sys.stdout.write(line)
                #if option == -d print the following:
                (CodeTrace(line).Trace(line))
                print(locals().keys())
                print(str(self.pattern) + str(regex))


class CodeTrace(object):
    def __init__(self, line):
        self.line = line

    def Trace(self, line):
        #Creating Timestamp
        ts = time.time()
        ts = datetime.datetime.fromtimestamp(ts).strftime('[%Y-%m-%d %H:%M:%S:%f]')
        #Calling class and method
        stack = inspect.stack()
        the_class = stack[1][0].f_locals["self"].__class__
        the_method = stack[1][0].f_code.co_name
        calling_the_class = (" {}.{}() ".format(str(the_class), the_method))
        #Any parameters passed to the method
        #parameters = str((Grepper.matchline(Grepper).keys()))
        #return_value = sys.argv[1]
        (locals().keys())
        #Writing trace
        sys.stderr.write(ts + calling_the_class + "\n")
        """parameters + return_value"""


def main():
    pattern = str(sys.argv[1])
    Grepper(pattern).matchline()

if __name__ == "__main__":
    main()

0 个答案:

没有答案