我试图在python中使用flask创建端点,但我得到了TypeError:';str';对象不可调用

我试图在python中使用flask创建端点,但我得到了TypeError:';str';对象不可调用,python,flask,Python,Flask,这是我的密码- if __name__=="__main__": obj = MethodGeneration() files = obj.get_python_files_with_keywords() node = obj.get_file_node("firstDirectory/user.py") classes = obj.get_classes(node) for class_ in classes: print("Clas

这是我的密码-

if __name__=="__main__":
obj = MethodGeneration()
files = obj.get_python_files_with_keywords()
node = obj.get_file_node("firstDirectory/user.py")
classes = obj.get_classes(node)

for class_ in classes:
    print("Class name:", class_.name)
    methods = [n for n in class_.body if isinstance(n, ast.FunctionDef)]
    for method in methods:
        print("method name:", method.name)
        if method.name != "random_method":
            url_rule = "/{0}".format(method.name)
            for arg in method.args.args:
                if  str(arg.arg) != "self":
                    url_rule = url_rule + "/" + "<{0}>".format(arg.arg)
            print("url rule {0}".format(url_rule))
            app.add_url_rule(url_rule, url_rule, method.name)
app.run(debug=True)

传递方法而不是名称

app.add_url_rule(url_rule, url_rule, method)

我试过了,但随后出现了“TypeError:“FunctionDef”对象不可调用”错误。您必须从
ast.FunctionDef
对象创建一个函数。看起来有人已经这样做了。下面的东西帮助了我,似乎使用class-import ast txt=“”class MyClass():def foo(x,y=2):z=x*y+3 print(“z is”,z)return z**2”“”tree=ast.parse(txt,mode='exec')#class=[n代表tree.body中的n,如果是instance(n,ast.ClassDef)]code=compile(tree,filename='blah',mode='exec')namespace={}exec(code,namespace)val=“foo”dict_item=namespace[“MyClass”]。(dict_.items()表示列表中的x,y(dict_item):如果val==x:print(x)print(y)print(type(x))print(type(x))print(type(y))
app.add_url_rule(url_rule, url_rule, method)