Stripe Python SDK中添加Customer返回类型提示是否正确?
你这么写不是错误做法,反而非常合理。
首先先澄清一个常见误区:Stripe Python SDK 从 v2.30.0 版本开始就已经内置了完整的官方类型标注,stripe.Customer.retrieve 本身的返回类型就是 Customer,你看到返回值是 Any 大概率是两个原因:要么你本地用的SDK版本太旧还没带类型标注,要么是你的编辑器/类型检查工具没有正确加载SDK自带的类型桩文件。
就算你用的是不带类型标注的旧版本SDK,主动给函数加-> Customer的返回提示也是完全正确的:你明确知道这个API调用的结果就是Customer实例,这个标注相当于你给类型检查工具补充了确定的类型信息,能避免后续调用这个函数的代码还要处理Any类型的问题,反而能提升整个代码库的类型安全性。
如果你实在担心运行时类型不匹配,可以加一层简单的运行时校验兜底:
from stripe import Customer import stripe def get_stripe_customer(stripe_customer_id: str) -> Customer: customer = stripe.Customer.retrieve(stripe_customer_id) if not isinstance(customer, Customer): raise TypeError(f"期望返回Stripe Customer实例,实际得到{type(customer)}") return customer
也可以用typing.cast显式声明类型,明确告诉类型检查器你确认这里的返回值类型,消除类型告警:
from typing import cast from stripe import Customer import stripe def get_stripe_customer(stripe_customer_id: str) -> Customer: return cast(Customer, stripe.Customer.retrieve(stripe_customer_id))
内容的提问来源于stack exchange,提问作者Keisuke Nagakawa 永川 圭介
相关产品推荐
相关产品推荐

