на самом деле, в какой-то момент мне нужно вызвать метод из объекта «Builder». Существует два типа сборщиков: GetBuilder и AggregateBuilder (я использую Weaviate API, если интересно). Они оба позволяют мне настроить гибридный поиск следующим образом:
Код: Выделить всё
search_settings = {param_1: value_1, param_2: value_2, ...}
get_builder = get_builder.with_hybrid(**search_settings)
aggregate_builder = aggregate_builder.with_hybrid(search_settings)
Мой вопрос общий: существует ли чистый способ выполнить условную распаковку?
Пока я нашел только следующие варианты:
1 if - else
Код: Выделить всё
aggregate: bool
builder: GetBuilder | AggregateBuilder
if aggregate:
builder = builder.with_hybrid(settings)
else:
builder = builder.with_hybrid(**settings)
2 с использованием eval
Код: Выделить всё
aggregate: bool
builder: GetBuilder | AggregateBuilder
builder = eval("builder.with_hybrid({}settings)".format("**"*(not aggregate)))
Есть ли другой способ аккуратно выполнить условную распаковку?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python