Найти - Пользователи
Полная версия: Создание и вызов catch_all метода
Начало » Python для экспертов » Создание и вызов catch_all метода
1
Albert1980
Здрасте :)

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

Заранее спасибо!!
Александр Кошелев
как вариант
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" ) 
можно ещё через дескрипторы сделать.
Albert1980
Спасибо, будем копать :)
Albert1980
А можно рассказать как это при помощи дескрипторов реализовать?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB