如何在python中向包含boto3对象的函数添加类型提示?

如何在python中向包含boto3对象的函数添加类型提示?,python,boto3,boto,type-hinting,Python,Boto3,Boto,Type Hinting,如何在不使用诸如mypy_boto3这样的外部库的情况下,使用boto3向函数添加类型提示? 这与boto3.client尤其混淆,后者返回类型为botocore.client.s3的对象,该对象无法导入 下面脚本中要注释的示例函数是get\u client和list\u objects: import boto3 def get_client(): return boto3.client('s3') def list_objects(client): response

如何在不使用诸如mypy_boto3这样的外部库的情况下,使用boto3向函数添加类型提示? 这与boto3.client尤其混淆,后者返回类型为botocore.client.s3的对象,该对象无法导入

下面脚本中要注释的示例函数是
get\u client
list\u objects

import boto3


def get_client():
    return boto3.client('s3')


def list_objects(client):
    response = client.list_objects(Bucket="a", Prefix="b")
    for content in response.get('Contents', []):
        yield content.get('Key')


client = get_client()
for f in list_objects(client):
    print(f)


我开始学习
键入
模块,并了解了python 3.6+中可用的不同选项,但我不清楚运行时类型的类型提示是什么,比如在这种情况下,由
boto3.client返回的对象。

如果您对正在开发的外部库不感兴趣,则需要根据PEP 484使用。只需将类型放在单引号中

    def get_object(s3_client: 'botocore.client.S3') -> str:
        ...

显然,
boto3.client('s3')
返回的对象的运行时类型是
。不幸的是,添加相应的类型提示会引发:
AttributeError:module'botocore.client'没有属性'S3'