如何检查注释是否为Python中的ClassVar?

时间:2019-04-06 12:44:49

标签: python python-3.x

假设我有以下代码:

from typing import ClassVar

class A:
    a: ClassVar[str]

如何在运行时检查a是否已声明为ClassVar

我尝试使用isinstanceissubclass,但它们似乎不起作用:

>>> 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()

1 个答案:

答案 0 :(得分:0)

我设法使用__origin__解决了这个问题(显然):

>>> x = A.__annotations__["a"]
>>> x.__origin__ is ClassVar
True