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

如何在Python中检查注释是否是ClassVar?,python,python-3.x,Python,Python 3.x,假设我有以下代码: 从输入importclassvar开始 A类: a:ClassVar[str] 如何在运行时检查a是否已声明为ClassVar 我尝试使用isinstance和issubclass,但它们似乎不起作用: >>>注释__ {'a':键入.ClassVar[str]} >>>x=A.。\uuuuu注释\uuuuu[A] >>>isinstancex,键入.ClassVar TypeError:typing.ClassVar不能与isinstance一起使用 >>>issubcla

假设我有以下代码:

从输入importclassvar开始 A类: a:ClassVar[str] 如何在运行时检查a是否已声明为ClassVar

我尝试使用isinstance和issubclass,但它们似乎不起作用:

>>>注释__ {'a':键入.ClassVar[str]} >>>x=A.。\uuuuu注释\uuuuu[A] >>>isinstancex,键入.ClassVar TypeError:typing.ClassVar不能与isinstance一起使用 >>>issubclassx,typing.ClassVar TypeError:typing.ClassVar不能与issubclass一起使用
显然,我通过使用__origin _;解决了这个问题:

>>>x=A.。\uuuuu注释\uuuuu[A] >>>x.uuu原点是ClassVar 符合事实的
从Python3.8开始,可以使用typing.get_originannotation is ClassVar。