Идиома, которую вы должны использовать: isinstance(a, int)
вместо type(a) is int
.Если вы сделаете первое и напишите:
if isinstance(a, int):
self.a = a
elif isinstance(a, str) and a.endswith('some_prefix'):
self.b = a
... тогда ваш код должен быть проверен на чистоту.
Причина, по которой выполнение type(a) is int
не поддерживается / скорее всего выигранов ближайшее время мы не получим поддержки, потому что то, что вы в основном утверждаете, это то, что «a» - это точно int и никакого другого типа.
Но у нас на самом деле нетчистый способ написания такого типа в PEP 484 - если вы говорите, что некоторая переменная 'foo' имеет тип 'Bar', вы действительно говорите, что 'foo' может иметь тип 'Bar' или любой подкласс 'Bar'.