Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 30, 2011 19:32:26

ptax
От:
Зарегистрирован: 2010-09-18
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

Добрый вечер,
имею структуру проекта вида:

    \src (root)
\classes
\utils
FileUtils.py => [functinos]
MyClass.py => [class MyClass ...]
main.py
в каждом из пакетов есть __init__.py с описанием модулей __all_=

Из main.py не могу импортировать класс через “from classes import *”

чтобы использовать его без префикса: myClass= MyClass()…

Если есть мысли - welcome!
Спасибо за помощь.



Офлайн

#2 Янв. 30, 2011 20:17:03

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

ptax
__all_=
Одного подчерка не хватает.

Всё то что указано в __all__ должно быть доступно в самом __init__.py, т.е. быть там в пространстве имен.



Офлайн

#3 Фев. 1, 2011 12:25:41

ptax
От:
Зарегистрирован: 2010-09-18
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

Александр Кошелев
ptax
__all_=
Одного подчерка не хватает.

Всё то что указано в __all__ должно быть доступно в самом __init__.py, т.е. быть там в простанстве имен.
“__all_” это опечатка в посте.

Все равно не удается импортировать.
from classes.__init__ import __all__

NameError: name ‘Myfync’ is not defined

Хочет импортировать только с префиксом classes.MyModule.Myfunc



Офлайн

#4 Фев. 1, 2011 12:33:04

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Проблема с импортом классов из пакетов

Еще раз:

Всё то что указано в __all__ должно быть доступно в самом __init__.py, т.е. быть там в пространстве имен.
from classes.__init__ import __all__ - это вообще полет мысли! Не припомню, видел ли я где-нибудь такое…



Офлайн

#5 Фев. 1, 2011 12:34:46

ptax
От:
Зарегистрирован: 2010-09-18
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

Андрей Светлов
Еще раз:
Всё то что указано в __all__ должно быть доступно в самом __init__.py, т.е. быть там в простанстве имен.
from classes.__init__ import __all__ - это вообще полет мысли! Не припомню, видел ли я где-нибудь такое…
Это уже просто метод перебора :)
Должно работать так
from classes import *
но не работает :(



Отредактировано (Фев. 1, 2011 15:13:08)

Офлайн

#6 Фев. 1, 2011 15:48:17

Юрчек
От:
Зарегистрирован: 2009-04-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

from classes.MyClass import *
Оно?



Офлайн

#7 Фев. 1, 2011 15:59:06

ptax
От:
Зарегистрирован: 2010-09-18
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

Юрчек
from classes.MyClass import *
Оно?
Нет.
Попробую расписать подробней.

   \src (root)
\classes
\utils
FileUtils.py => [functinos]
MyClass_1.py => [class MyClass_1 ...]
MyClass_2.py => [class MyClass_2 ...]
MyClass_n....py => [class MyClass_n... ...]
main.py
если писать
from classes.MyClass_1 import MyClass_1
from classes.MyClass_2 import MyClass_2
from classes.MyClass_n import MyClass_n..
То все как бы работает.
Но хочется как то проще написать что бы не писать куча строк для импорта классов .



Офлайн

#8 Фев. 1, 2011 16:08:57

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

ptax
from classes.MyClass_1 import MyClass_1
from classes.MyClass_2 import MyClass_2
from classes.MyClass_n import MyClass_n..
Положите эти строчки в classes/__init__.py. И потом пользуйтесь from classes import *



Офлайн

#9 Фев. 1, 2011 16:46:59

ptax
От:
Зарегистрирован: 2010-09-18
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с импортом классов из пакетов

Александр Кошелев
ptax
from classes.MyClass_1 import MyClass_1
from classes.MyClass_2 import MyClass_2
from classes.MyClass_n import MyClass_n..
Положите эти строчки в classes/__init__.py. И потом пользуйтесь from classes import *
Огромное спасибо.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version