Я написал симпатичное маленькое приложение, которое получает информацию о погоде Yahoo и публикует ее в Twitter. Это сработало безупречно, и теперь я хочу переставить код в файлы с разными именами, чтобы иметь больше смысла. И вот тогда я столкнулся с некоторыми проблемами.
Раньше у меня было Class
в libtweather.py
. Это был мой account
. Это позволило мне сделать accountName.parseFeed()
, и я получил бы в качестве результата анализируемой погоды Yahoo. (__ini__
взяли в качестве аргумента URL погоды, имя пользователя и пароль Twitter)
Это было доступно из моего основного скрипта, который создал экземпляры Class
, например:
exec '%s = lw.twitterWeather("%s", "%s", "%s")' % (item[0], item[1], item[2], item[3])
В нем содержался список всех имен учетных записей в списке, который передавался в качестве аргумента другим функциям.
Другая функция getWeather
получает погоду, выполняя:
def getWeather(accountList): #account names passed as a list of strings
for item in accountList:
print item, ': ',
item = eval(item)
print item.parseFeed(), '\n
Теперь я решил переместить функцию getWeather
в тот же файл, что и Class
, но строка item = eval(item)
вызывает у меня проблемы, поскольку в этом файле не создано ни одного экземпляра. Все они в основном скрипте.
Теперь мой вопрос: могу ли я как-то передать эти экземпляры в качестве аргументов функции? Или я должен поместить функцию в Class
? Даже если бы я это сделал, мне все равно нужно было бы сделать item.parseFeed()
для нескольких элементов в списке, поэтому мне все равно понадобится item = eval(item)
, нет?
Спасибо заранее. Мое приложение немного опубликовано здесь, но я опубликую больше кода, если нужно, чтобы лучше понять.
Обновление: В итоге я запустил libtweather.py
, чтобы создать экземпляры при его импорте, чтобы функции, находящиеся в нем, могли получить к ним доступ (добавил код, генерирующий экземпляр, в нижней части скрипта). Я уверен, что есть лучший способ, но он работает для меня в настоящее время, и я в порядке с этим.