【发布时间】:2021-12-25 12:44:45
【问题描述】:
python 支持类型提示:
https://docs.python.org/3/library/typing.html
我想知道这些提示是否也可用于在运行时动态强制执行类型。
例如:
class C:
def __init__(self):
self.a : int = 0
def __str__(self):
return str(self.a)
@classmethod
def get(cls,**kwargs):
c = cls()
for k,v in kwargs.items():
setattr(c,k,v)
# ValueError exception thrown here ?
return c
attrs = {"a":"a"} # developer wanted an int !
c = C.get(**attrs)
print(c)
简而言之,我想避免在get函数中重新输入属性“a”的类型:
@classmethod
def get(cls,**kwargs):
c = cls()
for k,v in kwargs.items():
if k=="a" and not isinstance(v,int):
raise ValueError()
setattr(c,k,v)
return c
有没有办法“重用”构造函数中给出的“a”应该是一个 int 的信息?
注意:对这个问题的回答表明,至少对于函数的自省参数类型提示可以访问:
【问题讨论】:
-
无运行时强制。线索在术语hint中
标签: python type-hinting typing duck-typing