クラスを返す関数があり、オブジェクトとして保存しています。私はクラスのメソッドを呼び出すしようとすると私はそれが何の命名衝突されていないことを確認するために、オブジェクトに名前を変更したエラーTypeError:クラス関数を呼び出すときに 'int'オブジェクトを呼び出しできません
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
私は出力<route.File_type instance at 0x7f96e3e90950>
を得るFILE_TYPEをプリントアウトした場合、私は辞書や要求に基づいてFILE_TYPEを返すget_file_type方法で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:]
[最小限で完全であり、検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。エラーが発生している行を表示していないし、エラーを生成するコードを必ずしも提供していない場合もあります。そのページを読み、それに応じてあなたの投稿を編集してください。 –
'File_type'を初期化すると、' route'属性は関数 'route'を上書きしていますので、呼び出すことはできません。彼らに別の名前をつける –
@PatrickHaughおかげで問題は解決した – Olof