Ложное исправление из / импорта оператора в Python

Погрузчики классов могут быть сложной проблемой. Вы можете столкнуться с проблемами, если используете несколько загрузчиков классов и не имеете четкого и строгого определения своих взаимодействий. Я думаю, чтобы действительно иметь возможность выгружать класс, который вы собираетесь удалить, нужно удалить все ссылки на какие-либо классы (и их экземпляры), которые вы пытаетесь выгрузить.

Большинство людей, которым необходимо выполнить этот тип предмет в конечном итоге используя OSGi . OSGi действительно мощный и удивительно легкий и простой в использовании,

24
задан oneself 5 July 2012 в 19:38
поделиться

1 ответ

Если вы исправляете что-то в одном и том же модуле, вы можете использовать __main__:

from mock import patch
from collections import defaultdict

with patch('__main__.defaultdict'):
    d = defaultdict()
    print 'd:', d

Если вы что-то делаете для импортированного модуля, вы можете использовать это Имя модуля, поэтому исправлена ​​правильная ссылка (или имя):

# foo.py

from collections import defaultdict

def bar():
    return defaultdict()


# foo_test.py    

from mock import patch
from foo import bar

with patch('foo.defaultdict'):
    print bar()

Дело в том, что патч хочет получить полный путь к патчу. Это просто выглядит немного странно при исправлении чего-либо в текущем модуле, так как люди не часто используют __main__ (или, если уж на то пошло, ссылаются на текущий модуль).

38
ответ дан Adam Wagner 5 July 2012 в 19:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: