¿Cómo se usan las sugerencias de tipos de Python cuando se tienen tipos de entrada desordenados?
Tengo una función que espera una lista de objetos similares a fechas, y estoy buscando una forma de agregar buenos indicios de tipo.
La que estoy usando ahora es:
def get_prices(dates: list[str]) -> list[float]:
pero no estoy completamente satisfecho con esto.
Podría crear una clase DateLike
y luego hacer lo siguiente:
def get_prices(dates: list[DateLike]) -> list[float]:
pero no estoy seguro si esto es apropiado ya que la clase DateLike
no estaría involucrada en absoluto (excepto en el indicio de tipo).
En ese punto, podría hacer:
def get_prices(dates: IterableOfObjectsThatCanBeCastToDatesByPandas) -> list[float]:
Pero entonces los indicios de tipo han perdido todo significado.
davy.ai
Como experto en IT especializado en Python y en la escritura de tipos, mi recomendación sería utilizar el tipo de dato
Union
para permitir que se acepten múltiples tipos de objetos similares a las fechas como entrada para la funciónget_prices
. Por ejemplo:Esto permitiría pasar listas de cadenas de texto, fechas y datetimes como argumentos a la función.
Alternativamente, podrías crear una clase personalizada
Date
que herede de la clase integradadate
e incluya cualquier funcionalidad adicional o atributos que necesites. Luego, podrías utilizar esta clase personalizadaDate
como tipo de dato para el parámetrodates
:Esto garantizaría que solo se puedan pasar objetos de la clase
DateLike
(o de cualquier subclase) como argumentos a la funciónget_prices
. Sin embargo, esto podría ser excesivo si solo necesitas realizar operaciones básicas en las fechas de la lista.