我有以下代码,Pycharm类型提示未使用我要导入为的“别名”:
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读取“别名”?
答案 0 :(得分:1)
根据您的导入,ListObject
和StripeListObject
指的是完全相同的类型:它们是完全可以互换的。这意味着,如果您有一些接受StripeListObject
的函数,则传入ListObject
是完全有效的,反之亦然。请注意,在运行时也是如此:在运行时,StripListObject
仅是引用基础ListObject
类的变量:变量的“名称”不会更改运行时的行为。>
这就是为什么PyCharm将鼠标悬停在类型上时会说类型为ListObject
的原因:它倾向于显示类型的原始名称,而不是别名。这是一件好事!它有助于防止人们意外地认为这两种类型是不同的(并反映了运行时发生的情况)。
我强烈怀疑这种行为是不可配置的:如果PyCharm以任何其他方式表现,那将是混乱的,并且可以说是错误的。
如果您希望PyCharm将ListObject
和StripeListObject
视为两种不同的类型,则需要(a)创建一个名为StripeListObject
的新类(也许继承自{ {1}}),或(b)将ListObject
设为NewType,而不是别名。