【发布时间】:2015-07-02 07:01:56
【问题描述】:
在python中,我可以创建一个在实例化时可以接收任意方法调用的类吗?我已经阅读了this,但无法将它们拼凑在一起
我猜这与attribute lookup 有关。对于一个班级Foo:
class Foo(object):
def bar(self, a):
print a
class属性可以通过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
我怎样才能做到这一点?我希望这种行为模拟一个对象进行测试。
【问题讨论】:
-
如果你想模拟一个对象,为什么不使用 Mock 库呢?
-
@DanielRoseman 您的建议完全正确,我只是想了解更多python的内部工作原理。