假设我有以下代码:
from typing import ClassVar
class A:
a: ClassVar[str]
如何在运行时检查a
是否已声明为ClassVar
?
我尝试使用isinstance
和issubclass
,但它们似乎不起作用:
>>> A.__annotations__
{'a': typing.ClassVar[str]}
>>> x = A.__annotations__["a"]
>>> isinstance(x, typing.ClassVar)
TypeError: typing.ClassVar cannot be used with isinstance()
>>> issubclass(x, typing.ClassVar)
TypeError: typing.ClassVar cannot be used with issubclass()
答案 0 :(得分:0)
我设法使用__origin__
解决了这个问题(显然):
>>> x = A.__annotations__["a"]
>>> x.__origin__ is ClassVar
True