exeplor
Июнь 5, 2011 23:08:10
Жаль конечно что в питоне невозможно подключать части кода как в пхп, но и без этого я нашел себе проблему.
Я хочу импортировать файл .py в котором есть мой класс.
files \ stand.py << в этот файл я хочу импортировать files \ include \ dop_info.py
Прописал пути, все импортирует отлично, но почему то при попытке вызвать какую либо функцию или класс, в ответ я получаю что такой объект не найден (
Message File Name Line Position
Traceback
<module> C:\files\stand.py 5
exceptions.AttributeError: ‘module’ object has no attribute ‘my_class’
Пожалуйста скажите каким образом я могу подключать свои классы? А главное, можно ли как то подключить не проописывая полностью путь, а исходя от родительской папки?
Infernus
Июнь 6, 2011 00:15:28
Можете выложить кусок кода, в котором происходит exception?
exeplor
Июнь 6, 2011 00:28:29
>>> import testes #(пути прописаны, файл импортируется правильно)
>>> try: print testes.my_function() # функция возвращает “hello”
>>> except Exception, e: print e
'module' object has no attribute ‘my_function’
Infernus
Июнь 6, 2011 01:38:41
Не хочу показаться банальным, но раз import успешный, то проверьте наличие метода с именем “my_function” в модуле testes и правильность написания названий вообще. Либо, если это метод класса, то инициализировать объект класса и вызвать из него этот метод, а не из модуля.
agalen
Июнь 6, 2011 09:32:49
Бывают ситуации, когда тело модуля еще не выполнено, а к нему уже обращаются.
Пример:
## main.py
import a
# Будет исключение !!!
sp3
Июнь 6, 2011 19:19:52
import testes
reload(testes)
мжт старая версия testes не содержит my_function
print dir(testes) # покажет что есть внутри
scailfon
Июнь 17, 2011 22:44:38
У меня тоже вопрос насчет подключения своих классов. Есть несколько классов и функций, которые реализованы в отдельных *.py файлах. Есть главный файл проекта, который использует эти классы и функции. Проблема заключается в следующем: Каждый раз перед запуском главного файла мне приходится перекомпилировать файлы, содержащие реализации классов и функций, подключаемых к главному файлу, а затем уже запускать и его. Проект растет и такая перекомпиляция всех файлов становится затратным занятием. В чем может быть проблема, что главный файл сначала не видит остальные и как ее решить? Ответ хотелось бы получить asap.
doza_and
Июнь 18, 2011 07:43:19
scailfon
мне приходится перекомпилировать файлы
А как вы это делаете? (*.pyc фалы нужны чтоли?)
a.py:
import b
print b.a
b.py:
a=2
Питон видит файлы которые лежат с ним в одной директории и которые найдет в PYTHONPATH. Для проектов в нескольких директориях надо делать пакеты (см
http://docs.python.org/tutorial/modules.html)
scailfon
Июнь 18, 2011 14:37:14
doza_and) спасибо за линк
http://docs.python.org/tutorial/modules.html, Я подключала файлы как import <имя файла>, в котором определены функции и классы. Сейчас я стала использовать from <имя файла> import < имя класса/ф-ции> и заработало. Думаю эти методы просто были не видны, когда я делала import всего файла, а не определения классов/ ф-ций, потому как вызывала их в главном файле без указания имени модуля, в котором классы/методы содержались. Спасибо за помощь!