【发布时间】:2017-11-30 15:00:31
【问题描述】:
我正在编写一个库,其中有一个应该由用户子类化的类。我在该类中添加了类型提示,希望它们也会影响子类,这样用户就不必自己添加类型提示。
但是,它不起作用:
# Class from the library
class A:
def a(self, d: dict):
raise NotImplementedError()
# User-defined subclass
class B(A):
def a(self, d):
...
B.d 中变量d 的推断类型是Any,但我希望它是dict。有什么方法可以告诉 pycharm 它是 dict 而无需编写另一个类型提示?此类情况有什么通用做法吗?
【问题讨论】:
-
d 只是一个传入的 var,你用它做什么?您的第二个功能是覆盖已知的功能 a
-
我用 d 做什么并不重要。现在我只关心类型推断。我希望
A.a的类型提示适用于B.a。有可能吗? -
简短版:它不是严格可推断的,但这是一个合理的假设;我不知道在 pycharm 中这样做的方法,但它值得一个功能请求,或者,因为它是社区支持的,甚至可能添加你自己。但实际上,您应该在任何地方都明确说明。