#python
#python
Вопрос:
Есть ли способ создать класс, который каким-то образом имитирует имитацию, чтобы реализовать все возможные функции? Поэтому он никогда не должен возвращаться AttributeError
, а вместо этого печатать оператор.
Ответ №1:
да, есть __getattr__
, см. Ссылку на Python
Пример
class C:
def __getattr__(self, attr):
def print_fn_name():
print(f"you called {attr}")
return print_fn_name
c = C()
c.foo()
Ответ №2:
Да. unittest.mock.Mock
является примером такого класса, который очень часто используется в тестировании.
https://docs.python.org/3/library/unittest.mock.html
Если вы хотите создать свой собственный Mock
объект с нуля, посмотрите на волшебные методы, в частности __getattr__
, которые можно переопределить, чтобы вернуть любой объект для любого имени атрибута.