У меня есть метод, который принимает параметр, который может быть нескольких типов, и должен делать то или иное в зависимости от типа, но если я проверяю тип указанного параметра, я не получаю «реальный»типа, я всегда получаю <type 'instance'>
, и это портит мои сравнения.
У меня есть что-то вроде:
from classes import Class1
from classes import Class2
# Both classes are declared in the same file.
# I don't know if that can be a problem #
# ... #
def foo(parameter)
if (type(parameter) == type(Class1()):
# ... #
elif (type(parameter) == type(Class2()):
# ... #
И так как type(parameter)
возвращает <type 'instance'>
и type(Class1())
равно <type 'instance'>
, получается, что даже если параметр являетсяэкземпляр Class2, он идет в первое сравнение ...
Кстати, str(parameter.__class__)
правильно показывает classes.Class1
.Я думаю, я всегда мог бы использовать это, но я хотел бы понять, что происходит ... Я провел десятки таких сравнений, и все они работали правильно ...
Спасибо!:)