我有以下代码,Pycharm type提示没有使用我要导入的“别名”:
from stripe.api_resources.list_object import ListObject as StripeListObject
所以这个函数定义def my_func_name(subscription: StripeListObject, ...):
应该在查看工具提示时读取my_func_name(subscription: StripeListObject, ...
,而不是读取my_func_name(subscription: ListObject, ...):
你知道为什么会这样吗?我怎样才能强迫pycharm在查看类型提示时读取“别名”?你知道吗
根据您的导入,
ListObject
和StripeListObject
引用完全相同的类型:它们完全可以互换。这意味着,如果您有一个函数接受StripeListObject
,那么传入ListObject
将是完全有效的,反之亦然。请注意,在运行时也是这样:在运行时,StripListObject
只是一个引用底层ListObject
类的变量:变量的“名称”不会更改运行时行为。你知道吗这就是为什么当您将鼠标悬停在PyCharm上时,它会说类型是
ListObject
:它倾向于显示类型的原始名称,而不是别名。这是件好事!它有助于防止人们意外地认为这两种类型是不同的(并反映了运行时发生的情况)。你知道吗我强烈怀疑这种行为是不可配置的:如果PyCharm以任何其他方式进行操作,这将是令人困惑的,而且可以说是错误的。你知道吗
如果希望PyCharm将
ListObject
和StripeListObject
视为两种不同的类型,则需要(a)创建一个名为StripeListObject
的新类(该类可能继承自ListObject
),或者(b)使StripListObject
成为NewType,而不是别名。你知道吗相关问题 更多 >
编程相关推荐