2013-02-26 2 views
1

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

для например: сорт(), фаска(), исключить() являются различные функции с их аргументами и sort_flag, facet_flag и exclude_flag, как условие, установленное в истинным или ложным

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

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

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

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

Там может быть альтернативой, чтобы сделать это с помощью GetAttr, но его сбивает с толку, чтобы использовать его с помощью аргументов функции и на в то же время он может генерировать много проверок (для трех флагов, близких к 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() 
Смежные вопросы