Python имеет встроенную функцию type
, и каждый экземпляр также имеет атрибут __class__
. Я вообще считал, что они вернули то же самое. Даже документация и созвучно:Когда тип (экземпляр) не является экземпляром .__ class__?
instance.__class__
Класс, к которому принадлежит экземпляр класса.
и
type(object)
С одним аргументом, возвращает тип объекта.
Однако в abc.ABCMeta.__instancecheck__
есть проверка, если они идентичны (слегка укороченный):
subclass = instance.__class__
subtype = type(instance)
if subtype is subclass:
Когда не будет ли это так? Когда type(instance)
не совпадает с instance.__class__
?
Возможный дубликат http://stackoverflow.com/questions/9610993/python-type-or-class-or-is – Kasramvd
@Kasramvd Спасибо за эту ссылку, я считаю, что это скорее дубликат http: // stackoverflow. ком/вопросы/1060499/разница между ними-typeobj-и-OBJ-класса. Я не уверен, почему они не появлялись, когда решали вопрос, и ни в «предлагаемых дубликатах», когда задавали вопрос. – MSeifert
Да, это случается иногда;) – Kasramvd