Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用定义/捕获的所有可能方法初始化_Python_Class - Fatal编程技术网

Python 使用定义/捕获的所有可能方法初始化

Python 使用定义/捕获的所有可能方法初始化,python,class,Python,Class,我试图组合一个类似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 prin

我试图组合一个类似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.

当然,我知道这是为什么,但我怎样才能让它起作用呢?有什么提示吗?

如果你看看,你会看到一个基本上实现了我想你正在寻找的模式的例子。然而,在模拟库之外,这是一种有点危险的行为。

很好且有趣的解决方案。确实是一个很好的解决方案。谢谢虽然OP接受了这一点,但这几乎是他们要求的……我认为
\uuu call\uuuu
应该
返回self.msg
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()