Как выполнить проверку типов с помощью пользовательских объединений универсальных типов в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как выполнить проверку типов с помощью пользовательских объединений универсальных типов в Python?

Сообщение Anonymous »

Я работаю над созданием более общей системы типов для проверки типов аргументов в Python. Например, я хочу определить коллекцию таких типов, как int и float, как числовые типы, а datetime, date и timedelta как время. родственные типы. Затем я хочу объединить их в родительский тип под названиемОКОКАРГТИПЫ.
Вот упрощенная версия того, что я пробовал до сих пор:

Код: Выделить всё

from typing import Union
from datetime import datetime, date, timedelta

# Define numeric and time-related types
NumT = Union[float, int]
TimeT = Union[datetime, date, timedelta]

# Combine both into a parent type
OkayArgTypes = Union[type[NumT], type[TimeT]]
Цель состоит в том, чтобы использоватьokayArgTypes, чтобы проверить, принадлежит ли данная переменная одному из разрешенных типов. Например:

Код: Выделить всё

def test(t: OkayArgTypes):...

test(NumT) # Error
test(int) # OK
Я хочу, чтобы как NumT, так и int передавались как тип.
Однако я изо всех сил пытаюсь понять как на самом деле выполнить условную проверку с помощью OctoberArgTypes. Приведенный выше код не работает должным образом, поскольку type(x), похоже, не соответствует тому, как определенОКОКАЛИГИС.
Может ли кто-нибудь мне помочь? понимаю, потому что я явно упускаю из виду тот факт, что я объединяю типы, а затем пытаюсь вызвать само объединение, однако мне не хватает дальнейшего опыта.
  • Как я могу правильно определить NumT или OKAgTypes для этого варианта использования?
  • Как правильно выполнить проверку типа во время выполнения?
< strong>ПРИМЕЧАНИЕ: Union используется для py3.9
Заранее благодарим за помощь!

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»