Python 3.6+ аннотация аргумента, который может иметь строку или любой класс - PullRequest
0 голосов
/ 23 января 2019
from typing import Union, Callable, Any

def map_type(t) -> str:
    if isinstance(t, str):
        _type = t
    else:
        _type = t.__name__
    return {
        'float': 'float',
        'int': 'integer',
        'number': 'float',
        'bool': 'boolean',
        'date': 'date',
        'datetime': 'datetime',
        'list': 'list',
        'str': 'string'
    }.get(_type)

Что тогда написать для аннотации t ?

def map_type(t: Union[str, Any])->str: pass

1 Ответ

0 голосов
/ 23 января 2019

Не какой-либо объект, но любой класс? Тип занятий type

>>> type(int)
type
>>> type(str)
type

Таким образом, вы, вероятно, хотите объединить str и type,

def map_type(t: Union[str, type]) -> str:
    ...

Тип Any означает «не проверено», что бесполезно в объединении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...