Suponga que defino una clase con variables de nivel de clase con sugerencias de tipo (por ejemplo, algo así como las nuevas clases de datos de Python 3.7)

class Person:
    name: str
    age: int

    def parse_me(self):
        "what do I do here??"        

¿Cómo puedo obtener los pares de (variable name, variable type)?

15
blue_note 16 oct. 2018 a las 17:46

2 respuestas

La mejor respuesta

typing.get_type_hints es otro método que no Implica acceder a propiedades mágicas directamente:

from typing import get_type_hints

class Person:
    name: str
    age: int

get_type_hints(Person)
# returns {'name': <class 'str'>, 'age': <class 'int'>}
8
Gringo Suave 8 ene. 2020 a las 03:37

Estas sugerencias de tipo se basan en anotaciones de Python. Están disponibles como la propiedad __annotations__. Esto se aplica tanto a las clases como a las funciones.

>>> 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'>}
6
Remco Haszing 16 oct. 2018 a las 14:55