Я хочу проверить тип, возвращаемый API python boto3.
Ниже приведен рабочий код
import boto3
ec2 = boto3.resource('ec2', region_name='us-east-1')
volumes = ec2.volumes.filter(Filters=[{'Name': 'volume-id', 'Values': ['vol-xxx.....']}])
volume = list(volumes)[0]
, печатающий значение volume
работы переменных
print(volume)
# outputs the following
ec2.Volume(id='xxx....')
Печать типа говорит
print(type(volume))
# outputs the following
<class 'boto3.resources.factory.ec2.Volume'>
Следующий код вызывает ошибку:
if type(volume) == boto3.resources.factory.ec2.Volume:
print("success")
# Returns AttributeError: module 'boto3.resources.factory' has no attribute 'ec2'
Следующий код не вызывает исключение, но выражение оценивается как False
print(type(volume) == ec2.Volume)
Мне интересно, почему print(type(volume))
возвращает boto3.resources.factory.ec2.Volume
, но type(volume) == boto3.resources.factory.ec2.Volume
не удается.
Мне также интересно, как сравнить тип переменной volume
, поскольку type(volume) == ec2.Volume
не вызывает синтаксической ошибки, но возвращает False
(я ожидаю True
)