| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > работа с функциями |
| Автор: AlexMakarov 2.10.2006, 16:08 |
| Помогите пожалуста! У меня в программе есть строка, которая содержит имя функции, могу я как нибудь вызвать эту функцию??? |
| Автор: PyAlexey 2.10.2006, 16:15 |
| Прежде чем вызывать функции, стоит почитать учебник. А то, как обратно отзывать будите? |
| Автор: pythonwin 2.10.2006, 16:24 |
| Автор: AlexMakarov 2.10.2006, 16:24 |
| pythonwin спасибо большое |
| Автор: pythonwin 2.10.2006, 16:25 |
пожалуйста! Заходи ещё! |
| Автор: Cr@$h 2.10.2006, 18:37 |
Раз человек спрашивает, у него есть причины, например, не понял. Если считаете этот вопрос не достойным вашего внимания, то не обращайте на него его. PyAlexey, ++ за твою rtfm-ую "шутку". Надеюсь, в следующий раз ты будешь отвечать на вопрос или просто не обращать на него внимание ;) pythonwin, ++ за отзывчивость. |
| Автор: PyAlexey 2.10.2006, 19:13 | ||||
| Если честно, я просто сначала не понял вопроса ((. Подумал, что вопрос в том, как вызвать функцию, — то есть ламерский. Так что, извиняюсь. Задам вопрос, наверное, по теме. В модуле xmlrpc есть такая интересная фишка: объект класса может иметь функции (которые отражают функции RPC-сервера) следующего вида.
Так вот, каким образом написать класс-структуру, динамически стоящую подобную «вложенность»? Вчера полдня голову ломал — ничего не вышло. Но вскрытие xmlrpc кое-что всё-таки показало:
Но повторить это в нужной мне форме не получилось. Мне даже понять не удалось. Кто-нибудь объяснит? |
| Автор: proDiva 2.10.2006, 19:35 | ||
PyAlexey, я не знаю, как объяснить, потому что не знаю)))) Cr@$h, но я хочу + за отзывчивость))))) Парни, извините, за несерьезное настроение..... я шучу))) Просто на работе у меня сегодня была такая напряженка, а в Вашей компании я расслабляюсь. Поэтому не судите строго за мой флуд |
| Автор: Cr@$h 2.10.2006, 19:40 |
Конечно. ++, но за разряжение обстановки своим обществом. |
| Автор: proDiva 2.10.2006, 19:51 |
Ну вот, выпросила))) Спасибо за щедрость |
| Автор: J2A 2.10.2006, 20:17 | ||
| Операция "точка" -- это __getattr__, операция "вызов" -- это __call__. Из этих данных следует, что если хочешь реализовать bar.foo1.foo2.foo3.fun() то нужно чтобы каждый __getattr__ возвращал объекты, имеющие как __call__, так и новый __getattr__. В данном коде _MultiCallMethod и реализуют такой "хитрый" объект. В "магию" с __call_list я не углублялся... но на первый взгляд при __call__ имя вызова и параметры добавляются в "очередь" но не выполняются. MultiCallIterator выполняет служебные функции - обходит "очередь" результатов вызовов и смотри корректно/некорректно завершились вызовы. А уж MultiCall связывает всё воедино. Вообще, более явный пример -- это ProxyServer и _Method. Упрощенно выглядит так:
|
| Автор: PyAlexey 2.10.2006, 20:24 |
| J2A, спасибо, завтра попробую смастачить. |