Невозможно получить тип объекта boto3 - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу проверить тип, возвращаемый 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)

1 Ответ

0 голосов
/ 01 апреля 2020
ec2= boto3.resource('ec2') <br>
volume= ec2.Volume('vol-112233445566') <br>

print(volume._ _class_ _) <br> 
print(type(volume))<br>


if volume._ _class_ _== type(volume):<br>
    print('true') <br>
else: <br>
    print('false')<br>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...