我想允许使用Python 3进行类型提示,以接受作为给定类的子级的实例。我正在使用执行模块来检查函数的类型。例如:
import abc
class A(metaclass=abc.ABCMeta)
pass
class B(A)
def __init__(self,a)
self.a = a
pass
x = B(3)
@enforce.runtime_validation
def function(x:A)
print(x.a)
但是似乎python 3不允许这种语法,返回:
参数'x'的类型不是
。实际类型是B。
有帮助吗?
答案 0 :(得分:0)
默认情况下,强制应用不变类型检查。类型必须直接匹配-否则会引发错误。
为了接受子类的实例,可以通过添加以下方式将模式更改为协变:
enforce.config({'mode ': 'covariant'})
在执行任何类型检查之前(即靠近开始处)执行的代码中的某个点。
如文档中所述,还可以使用其他模式。
有关更多信息,请参见:https://github.com/RussBaz/enforce