Альтернативный способ использовать getattr в Python?

Я пытаюсь вызвать объектные функции, которые также позволяют нескольким различным функциям вызываться через один и тот же объект:

например: sort(), facet(),exclude() - это разные функции со своими аргументами и sort_flag, facet_flag и exclude_flag в качестве условия, установленного в true или false

можно назвать как:

si = sunburnt.SolrInterface("url","schema.xml")
response = si.query(arg1).facet(arg2).sort(arg3).exclude(arg4)

Могут быть определенные случаи, когда мне не нужно вызывать все эти функции одновременно, или же у меня нет всех аргументов для вызова этих функций или наоборот. В этой ситуации, как я могу назвать si.facet(args).sort(args) примерно так:

if sort_flag:
  --append sort function to the query
if exclude_flag:
  -- append exclude function

Может быть альтернатива сделать это с использованием getattr, но его использование с аргументами функции сбивает с толку, и в то же время может генерировать много операторов if check (для 3 флагов, близких к 3 факториальным операторам)

1 ответ

Решение

Я не уверен, что понял тебя, но ты не можешь сделать это?

si = sunburnt.SolrInterface("url","schema.xml")
query = si.query(arg1).facet(arg2)

if sort_flag:
  query = query.sort(arg3)
if exclude_flag:
  query = query.exclude(arg4)

response = query.execute()
Другие вопросы по тегам