python:获取类变量和类型提示

blu*_*ote 3 python

假设我定义了一个带有类提示并带有类型提示的类(例如,类似于新的python 3.7数据类)

class Person:
    name: str
    age: int

    def parse_me(self):
        "what do I do here??"        
Run Code Online (Sandbox Code Playgroud)

我如何得到双(variable name, variable type)

Rem*_*ing 5

这些类型提示基于Python注释。它们可作为__annotations__财产使用。这适用于类以及函数。

>>> class Person:
...     name: str
...     age: int
... 
>>> Person.__annotations__
{'name': <class 'str'>, 'age': <class 'int'>}
>>> def do(something: str) -> int:
...     ...
... 
>>> do.__annotations__
{'something': <class 'str'>, 'return': <class 'int'>}
Run Code Online (Sandbox Code Playgroud)


Bre*_*dan 5

typing.get_type_hints 是另一种不涉及直接访问魔术方法的方法:

from typing import get_type_hints

class Person:
    name: str
    age: int

get_type_hints(Person)
# returns {'name': <class 'str'>, 'age': <class 'int'>}
Run Code Online (Sandbox Code Playgroud)

  • 它还呈现以字符串形式给出的“前向”注释。 (2认同)