Как же так isinstance не работает?!
Эта статья о том, как важно быть последовательным. А также о том, почему иногда могут не работать проверки идентичности и наследования классов, и проверки принадлежности объекта к классу.
Пожалуй, большую часть из того, что я хочу сейчас вам рассказать правильнее было бы выразить в коде. Для наглядости. Итак, приступим:
Наверное, после запуска этого кода, особых пояснений больше не потребуется, однако пару слов я всё же скажу.
Итак, механизм импорта честно отрабатывает, выполняя то, что ему поручили, и в
И, если вам вдруг интересно, где (помимо этого странного кода выше) можно натолкнуться на такое поведение, то я скажу, что в любых проектах со множеством [вложенных] модулей есть такой шанс. Например, в Django, создатели которого вовсе не зря советуют придерживаться одного стиля импорта, не мешать абсолютные с относительными.
Будьте последовательны, не забывайте про тесты.
Удачи!
Наверное, после запуска этого кода, особых пояснений больше не потребуется, однако пару слов я всё же скажу.
Итак, механизм импорта честно отрабатывает, выполняя то, что ему поручили, и в
sys.modules
появляется два разных модуля. Импортированный разными способами один и тот же класс, различается, помимо прочего, атрибутом __module__
, который был проставлен в момент создания типа.И, если вам вдруг интересно, где (помимо этого странного кода выше) можно натолкнуться на такое поведение, то я скажу, что в любых проектах со множеством [вложенных] модулей есть такой шанс. Например, в Django, создатели которого вовсе не зря советуют придерживаться одного стиля импорта, не мешать абсолютные с относительными.
Будьте последовательны, не забывайте про тесты.
Удачи!
На заметку
Зарегистрированные пользователи могут добавлять Книги.