У меня есть метод, который принимает параметр, который может быть нескольких типов, и должен делать что-то в зависимости от типа, но если я проверю тип указанного параметра, я не получаю "реальный", типа, я всегда получаю <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())
is <type 'instance'>
, оказывается, что даже если этот параметр является экземпляром класса 2, он переходит в первое сравнение...
Кстати, str(parameter.__class__)
правильно показывает classes.Class1
. Наверное, я всегда мог это использовать, но я хотел бы понять, что происходит... Я сделал десятки сравнений, подобных этому, и все они работали правильно...
Спасибо!:)