В python могу ли я создать класс, который при создании экземпляра может получать вызов произвольного метода? Я прочитал это, но не смог собрать кусочки вместе
Я думаю, это как-то связано с attribute lookup
. Для класса Foo
:
class Foo(object):
def bar(self, a):
print a
Атрибут класса можно получить с помощью print Foo.__dict__
, что дает
{'__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__module__': '__main__', 'bar': <function bar at 0x7facd91dac80>, '__doc__': None}
Так что этот код действителен
foo = Foo()
foo.bar("xxx")
Если я вызову foo.someRandomMethod()
, будет получено AttributeError: 'Foo' object has no attribute 'someRandomMethod'
.
Я хочу, чтобы объект foo
получал любые случайные вызовы и по умолчанию не работал, т.е.
def func():
pass
Как я могу этого добиться? Я хочу, чтобы это поведение издевалось над объектом для тестирования.