我试图将类似stringIO的函数放在一起,我想知道是否有可能构建一个捕获所有可能方法的类,以便以下方法可以工作:
a = magicclass("Hello World!") #Hello world would be the return
print a() #Would print Hello world
print a.read() #should also print hello world
print a.adsf.asdf.xyz.random() #should also print hello world
我不知道如何通过这个,我可以定义我想要调用的所有可能的方法,但是如果我想将它传递给黑盒函数那就有问题。
#This works, but only for the main method.
#Every submethod has to have its own class defined, if you know what I mean.
def emptyreturnfunc(returnval): lambda: returnval
b = emptyreturnfunc("Hello World")
print b() #Does work
print b.asdf() #Doesn't work.
我知道为什么会这样,但我怎样才能让它发挥作用呢?任何提示?
答案 0 :(得分:9)
class A(object):
def __init__(self, msg):
self.msg = msg
def __call__(self):
print self.msg
def __getattr__(self, name):
return self
a = A('Hello World')
a()
a.b()
a.b.c()
答案 1 :(得分:2)
如果你看一下Mock library,你会看到一个基本上实现我认为你正在寻找的模式的例子。但是,在模拟库之外,这是一种危险的行为。