Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 5, 2011 23:08:10

exeplor
От:
Зарегистрирован: 2010-12-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Import своего класса

Жаль конечно что в питоне невозможно подключать части кода как в пхп, но и без этого я нашел себе проблему.
Я хочу импортировать файл .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’


Пожалуйста скажите каким образом я могу подключать свои классы? А главное, можно ли как то подключить не проописывая полностью путь, а исходя от родительской папки?



Отредактировано (Июнь 5, 2011 23:09:19)

Офлайн

#2 Июнь 6, 2011 00:15:28

Infernus
От:
Зарегистрирован: 2011-06-04
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Import своего класса

Можете выложить кусок кода, в котором происходит exception?



Офлайн

#3 Июнь 6, 2011 00:28:29

exeplor
От:
Зарегистрирован: 2010-12-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Import своего класса

>>> import testes #(пути прописаны, файл импортируется правильно)

>>> try: print testes.my_function() # функция возвращает “hello”
>>> except Exception, e: print e

'module' object has no attribute ‘my_function’



Офлайн

#4 Июнь 6, 2011 01:38:41

Infernus
От:
Зарегистрирован: 2011-06-04
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Import своего класса

Не хочу показаться банальным, но раз import успешный, то проверьте наличие метода с именем “my_function” в модуле testes и правильность написания названий вообще. Либо, если это метод класса, то инициализировать объект класса и вызвать из него этот метод, а не из модуля.



Офлайн

#5 Июнь 6, 2011 09:32:49

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Import своего класса

Бывают ситуации, когда тело модуля еще не выполнено, а к нему уже обращаются.
Пример:

## a.py
import b
x = 1
## b.py
import a
print a.x
## main.py
import a
# Будет исключение !!!



Офлайн

#6 Июнь 6, 2011 19:19:52

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Import своего класса

import testes
reload(testes)

мжт старая версия testes не содержит my_function

print dir(testes) # покажет что есть внутри



Офлайн

#7 Июнь 17, 2011 22:44:38

scailfon
От:
Зарегистрирован: 2011-06-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Import своего класса

У меня тоже вопрос насчет подключения своих классов. Есть несколько классов и функций, которые реализованы в отдельных *.py файлах. Есть главный файл проекта, который использует эти классы и функции. Проблема заключается в следующем: Каждый раз перед запуском главного файла мне приходится перекомпилировать файлы, содержащие реализации классов и функций, подключаемых к главному файлу, а затем уже запускать и его. Проект растет и такая перекомпиляция всех файлов становится затратным занятием. В чем может быть проблема, что главный файл сначала не видит остальные и как ее решить? Ответ хотелось бы получить asap.



Офлайн

#8 Июнь 18, 2011 07:43:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Import своего класса

scailfon
мне приходится перекомпилировать файлы
А как вы это делаете? (*.pyc фалы нужны чтоли?)
a.py:
import b
print b.a
b.py:
a=2
Питон видит файлы которые лежат с ним в одной директории и которые найдет в PYTHONPATH. Для проектов в нескольких директориях надо делать пакеты (см http://docs.python.org/tutorial/modules.html)



Офлайн

#9 Июнь 18, 2011 14:37:14

scailfon
От:
Зарегистрирован: 2011-06-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Import своего класса

doza_and) спасибо за линк http://docs.python.org/tutorial/modules.html, Я подключала файлы как import <имя файла>, в котором определены функции и классы. Сейчас я стала использовать from <имя файла> import < имя класса/ф-ции> и заработало. Думаю эти методы просто были не видны, когда я делала import всего файла, а не определения классов/ ф-ций, потому как вызывала их в главном файле без указания имени модуля, в котором классы/методы содержались. Спасибо за помощь!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version