У меня есть метод, который принимает параметр, который может быть нескольких типов, и должен делать то или иное действие в зависимости от типа, но если я проверю тип указанного параметра, я не получу "настоящий" тип, я всегда получаю <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
. Я думаю, что всегда мог бы использовать это, но я хотел бы понять, что происходит... Я сделал десятки подобных сравнений, и все они работали правильно...
Спасибо!! :)