Альтернативный способ использовать 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()