Форум сайта python.su
Приятного аппетита всем…
Есть пакет с модулем name в котором есть объект name. Мне нужно получить объект без явного обращения к модулю. Криво написал… Так будет понятнее:
>>> from package import name
>>> name
'объект name в модуле package.name'
Отредактировано (Авг. 9, 2009 02:31:25)
Офлайн
from package.name import name?
Или я чего то не понял? И где нарушается принцип наименьшего удивления? Что спросил - то и получил.
Офлайн
Ещё раз.
Я в конструкторе пакета импортирую список объектов. В том числе и объект name из модуля name. По идее там же есть и список __all__ в котором есть этот name… Но это уже частности.
Я знаю, как получить нужный мне объект. Например просто name.name или как предложили вы. Оно элементарно. Но я хочу удобство использования “from package import *”.
Это больше академический интерес… Но просто интересно, может я чего не уловил.
А принцип наименьшего удивления… Я был очень удивлён, увидев модуль name вместо объекта, когда к конструкторе пакета я импортировал объект.
Офлайн
:-)
from package import get_name
get_name()
Офлайн
:-)
bw– Робот класса “Буратино” нырять не может!
from package import * – должен работать как ты хочешь
bwНу это уже всё равно, что скальпелем дрова рубить… Ладно, переименовал модуль из красивого “to_pickle” в некрасивое “topickle” и фиг с ним.
Может только хук на импорт повесить.
Офлайн
Видимо я не понял задачи, так как у меня всё работает (Python 2.5.2).
foo/__init__.py:
import bar
bar = bar.bar
bar = 'bar'
>>> from foo import bar
>>> bar
'bar'
>>> from foo import *
>>> bar
'bar'
Отредактировано (Авг. 9, 2009 17:58:04)
Офлайн
Так… Приехали… Ты правильно понял задачу. Python 2.6.1 – твой пример работает.
Полез чуть дальше… Это эклипс! Просто с консоли всё нормально, а в эклипсине импортируется модулем!
Полез ещё дальше… Дело в том, что у меня а эклипсе есть “External Tool”, который запускает “nosetests -vs –with-doctest” в папке с текущим проектом. Так вот, если я убираю “–with-doctest”, то всё работает правильно. Так что эклипс не причём.
С одной стороны, я доктесты не часто использую, а с другой глюк неприятный. По-меньше бы такой магии…
Ещё раз спасибо!
P.S.
$ nosetests -V
nosetests version 0.11.0
Офлайн