Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 17, 2008 14:43:51

Albert1980
От:
Зарегистрирован: 2007-12-11
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание и вызов catch_all метода

Здрасте :)

В заголовке собственно всё и написано. Еще могу добавить, знаю что копать надо в сторону __getattribute__. Но мне нужна такая хитрость, надо что-бы в catch_all метод передавалось имя запрошенного метода, а так-же все его параметры.
Требуется для создания Mock объекта, записывающего вызовы методов для использования в юниттестировании.

Заранее спасибо!!



Отредактировано (Янв. 17, 2008 15:34:22)

Офлайн

#2 Янв. 17, 2008 15:36:31

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Создание и вызов catch_all метода

как вариант

class Foo( object ):
    def __getattribute__( self, name ):
        self.cur_name = name
        return self
    
    def __call__( self, *args, **kwargs ):
        print super( Foo, self ).__getattribute__( "cur_name" ), args, kwargs
        
f = Foo()
f.bar( 1, 3, a = 334, b= "abcd" ) 
можно ещё через дескрипторы сделать.



Офлайн

#3 Янв. 17, 2008 15:51:10

Albert1980
От:
Зарегистрирован: 2007-12-11
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание и вызов catch_all метода

Спасибо, будем копать :)



Офлайн

#4 Янв. 17, 2008 16:11:54

Albert1980
От:
Зарегистрирован: 2007-12-11
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание и вызов catch_all метода

А можно рассказать как это при помощи дескрипторов реализовать?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version