класс от BaseModel (pydantic). Как правильно указать тайп хинтинг? Сделал такую штуку, но хз, насколько это норм решение...
T = TypeVar("T", bound=BaseModel)
def build_template_string(model: Generic[T]):
А дальше что с классом делать?
def build_template_string(input_string: str, model: Generic[T]) -> dict: result = {} for _, var, _, _ in Formatter().parse(input_string): if var is not None: value = getattr(model, var, None) if value: result[var] = value return result
Так тип или объект?
объект передаётся
Просто BaseModel тогда
чёт я туплю походу... есть экземпляр от class Event(BaseModel) - его я передаю в функцию. Могут быть экземпляры от различных классов от BaseModel. Type[BaseModel], BaseModel - не подходит
Просто BaseModel укажи
я, наверно, не совсем верно объяснил пример def get_keys(event: Event) -> dict: build_template_string(event)) def build_template_string(model: BaseModel) -> dict: .... Expected type 'BaseModel', got 'Event' instead
https://stackoverflow.com/questions/58675911/dependent-types-and-polymorphism-in-python-with-mypy, вроде то
пробовал Expected type 'Type[Model]', got 'Event' instead
Показывай код
а ну всё верно, такое и не должно работать, Event от BaseModel унаследован, а не наоборот
Выше скидывал
Странно. Целиком бы код
уже разобрался. то я тупанул(
Обсуждают сегодня