在Python 3.7.1项目中,定义的方法的返回类型与结果类型不兼容。然而,IDE PyCharm 2018.2没有给出任何警告。下面是一个代码示例:
import numpy as np
from dataclasses import dataclass
import typing
# Definitions:
@dataclass(order=True)
class Theta:
vector: np.ndarray
def a(self) -> typing.AnyStr:
return self.vector.size
def b(self) -> str:
return self.vector.size
# Client code:
x = np.array([1, 2])
s = Theta(x).a().capitalize() # runtime errors
u = Theta(x).b().capitalize()
是否有一种方法可以在定义和客户端代码中强制执行类型警告?
注意:关于SO上的Python类型提示有几个问题,例如,类型提示时的Pycharm奇怪警告。然而,他们似乎专注于另一个方面。
typing.AnyStr
是一个类型变量。这意味着它将从传递的参数或包含的类中推断出来。在您的情况下,类和方法都不使用此类型变量,因此推断出的a
返回类型为Any
。