Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 16, 2017 19:48:44

PogChamp
Зарегистрирован: 2017-09-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

set object is not callable

Здравствуйте.
Помогите разобраться, в чем ошибка, пожалуйста.

Создал модуль vsearch c двумя функциями search4vowels и search4letters.

 def search4vowels(phrase: str) -> set:
    """Возвращает гласные, найденные в указанной фразе"""
    vowels = set('aeiou')
    return vowels.intersection(set(phrase))
def search4letters(phrase: str, letters: str='aeiou') -> set:
    """Возвращает буквы, найденные в указанной фразе"""
    return set(letters).intersection(set(phrase))

Потом используют функцию search4letters из этого модуля в следующем коде:

 from flask import Flask
from vsearch import search4letters
app = Flask(__name__)
@app.route('/')
def hello() -> str:
	return 'Hello world from Flask!'
@search4letters('/search4')
def do_search() -> str:
	return str(search4letters('life, the universe, and everything', 'eiru,!'))
	
app.run()

И когда пытаюсь запустить его в командной строке, выдает ошибку
'set' object is not callable
Хотя в книге, откуда взяты примеры, у авторов все работает. Книга переведенная, может, дело в опечатке, но сам, сколько голову ни ломал, додуматься не могу.

Офлайн

#2 Сен. 16, 2017 20:42:23

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

set object is not callable

Поправьте декоратор у функции do_search()

Офлайн

#3 Сен. 16, 2017 20:50:33

PogChamp
Зарегистрирован: 2017-09-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

set object is not callable

 def @do_search() -> str:
Вот так? Ругается на invalid syntax.

Офлайн

#4 Сен. 16, 2017 20:54:05

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

set object is not callable

Вы написали:

 @search4letters('/search4')
def do_search() -> str:
	return str(search4letters('life, the universe, and everything', 'eiru,!'))
Функция search4letters не может быть декоратором, вы, должно быть хотели написать:
 @app.route('/search4')
def do_search() -> str:
	return str(search4letters('life, the universe, and everything', 'eiru,!'))

Офлайн

#5 Сен. 16, 2017 21:01:51

PogChamp
Зарегистрирован: 2017-09-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

set object is not callable

Действительно.
Спасибо за помощь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version