0
我想在一个web应用程序中使用PyContracts,所以我有很多自定义类被传递,我只是想与其他更传统的参数类型一起检查。为了清洁和强制文档,我想使用合同编程(PyContracts)来完成此任务。引用本地pycontract类型
当我通过名称引用本地可见的类时,PyContracts似乎没有意识到该类型。例如:
from contracts import contract
class SomeClass:
pass
@contract
def f(a):
"""
:param a: Just a parameter
:type a: SomeClass
"""
print(a)
my_a = SomeClass()
f(my_a)
引发以下错误:
ContractSyntaxError: Unknown identifier 'SomeClass'. Did you mean 'np_complex64'? (at char 0), (line:1, col:1)
我知道我可以使用new_contract来定制定义名称,并将其绑定到类,但是这是一个很大的麻烦,每类型做。我想尽可能使用PyContracts的docstring语法,并且由于我使用布尔类型逻辑("None|str|SomeClass"
),所以我肯定需要使用字符串定义的合同格式。我如何用本地类型完成此任务,并尽可能少地侵入我的其他代码库?