Ответ 1
-
Я могу только догадываться, но если вы делаете в
module
class Type(object): pass var = Type() class Type(object): pass
то оба типа выглядят как
<class 'module.Type'>
, но тем не менее разные.Вы можете проверить, что с помощью
print(id(Type), id(var.__class__))
или
print(Type is var.__class__)
Обратите внимание, что эти сравнения работают как для классов старого, так и для нового стиля. Для классов нового стиля они эквивалентны
print(Type is type(var))
. Но это не относится к классам старого стиля. -
Еще одна довольно распространенная проблема заключается в том, что вы вызываете этот модуль с помощью
python -m module
или
python module.py
делает его известным как модуль
__main__
. Если он импортируется где-то еще под его истинным именем, он известен под этим именем также с другим пространством имен. -
Еще одна догадка может заключаться в том, что вы работаете с ABC или иначе пусть класс имеет метод
__instancecheck__()
.