TypeError:' int'调用类函数时,object不可调用

时间:2016-11-30 21:17:09

标签: python

我有一个函数返回一个类,我把它保存为一个对象。当我尝试调用类方法时,我会收到错误

location = file_type.route(env['REQUEST_URI']) # Get the location
TypeError: 'int' object is not callable

我在对象上更改了名称,以确保它没有命名冲突。

在第一行,我在模块路由中调用方法get_file_type。

file_type = route.get_file_type(env['REQUEST_URI']) # Get File_type object
location = file_type.route(env['REQUEST_URI']) # Get the location

如果我打印出file_type,我会输出<route.File_type instance at 0x7f96e3e90950>

我将File_type类存储在字典中,方法get_file_type根据请求返回File_type。

path = {'html'  : File_type('html', 1, 1),
        'css'   : File_type('css', 1, 0),
        'ttf'   : File_type('ttf', 0, 0),
        }

def get_file_type(request): # return a File_type object
    extension = request.rsplit('.', 1)[-1]

    if extension in path:
        return path[extension]

    return path['html']

File_type类

class File_type:

    def __init__(self, type_, parse, route):
        self.type_ = type_
        self.parse = parse
        self.route = route

    def route(resource):
        if self.route == 1:
            for pattern, value in routes:
                if re.search(pattern, resource):
                    return value
            return None
        else:
            return resource.rsplit('.', 1)[0][1:]

1 个答案:

答案 0 :(得分:0)

File_type班级中,您有[{1}}作为方法。但是当你调用构造函数时,你写入route(这是一个方法)一些整数,所以你松开了你的方法,不能再调用它了。相反,您尝试调用整数。因此,只需更改方法或变量self.route的名称。

顺便说一下。方法总是必须将route作为参数(您的self方法不会)。