子类实例的类型提示
Type hint for instance of subclass
我想允许类型提示使用 Python 3 来接受给定 class 的子实例。我正在使用 enforce 模块来检查函数类型。例如:
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 不允许使用此语法,返回:
Argument 'x' was not of type < class 'A' >. Actual type was B.
有什么帮助吗?
默认情况下强制应用不变类型检查。类型必须直接匹配 - 否则会抛出错误。
为了接受子类的实例,可以通过添加将模式更改为协变:
enforce.config({'mode ': 'covariant'})
在代码中执行任何类型检查之前执行的某个点(即接近开始)。
文档中描述的其他模式可用。
有关更多信息,请参阅:https://github.com/RussBaz/enforce
我想允许类型提示使用 Python 3 来接受给定 class 的子实例。我正在使用 enforce 模块来检查函数类型。例如:
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 不允许使用此语法,返回:
Argument 'x' was not of type < class 'A' >. Actual type was B.
有什么帮助吗?
默认情况下强制应用不变类型检查。类型必须直接匹配 - 否则会抛出错误。
为了接受子类的实例,可以通过添加将模式更改为协变:
enforce.config({'mode ': 'covariant'})
在代码中执行任何类型检查之前执行的某个点(即接近开始)。
文档中描述的其他模式可用。
有关更多信息,请参阅:https://github.com/RussBaz/enforce