Это может легко произойти, если вы сделали следующее:
import route
и создаете default_route
, используя route.Route
- Invoke
reload(route)
, чтобы внести некоторые изменения кодак модулю (или просто для развлечения; не имеет значения, если модуль не изменился, reload
все равно перезагрузит его)
Вы можете столкнуться с этим аналогичным образом, если default_route
также былопределено в route
, и вы сделали from route import Route
, затем reload
-ed route
, затем сделали from route import default_route
(порядок импорта Route
и default_route
не имеет значения, если произошел reload
между ними и старым не было переоформлено).В любом случае, у вас есть экземпляр и класс из немного разных версий модуля;они могут выглядеть одинаково, иметь одинаковое поведение и т. д., но они не являются одним и тем же модулем и, следовательно, не одинаковыми классами, экземплярами и т. д.
В любом случае быстрая проверка состояла бы в вызовеdefault_route.__class__ is Route
;если он оценивается как True
, возможно, у вас есть какой-то странный ABC
основанный класс с ломаным __subclasshook__
, но, скорее всего, он будет оцениваться до False
, указывая, что два класса, несмотря на совпадающее имя, на самом деле происходит от независимых загрузок модуля.