Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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 - Fatal编程技术网

在python中进行函数链接时,是否有方法引用;“当前”;对象

在python中进行函数链接时,是否有方法引用;“当前”;对象,python,Python,假设我被授予以下课程: class foo(object): def __init__(self, int): self.count = int def increment(self, int): return foo(int + 1) def decrement(self, int): return foo(int - 1) 我的目标是将函数调用链接在一起,以达到我想要的结果,而不必将每个对象分配给变量。例如,我知

假设我被授予以下课程:

class foo(object):

    def __init__(self, int):
        self.count = int

    def increment(self, int):
        return foo(int + 1)

    def decrement(self, int):
        return foo(int - 1)
我的目标是将函数调用链接在一起,以达到我想要的结果,而不必将每个对象分配给变量。例如,我知道我可以做到:

obj = foo(0)
obj = obj.increment(obj.count)
obj = obj.decrement(obj.count)
obj = obj.increment(obj.count)
obj = obj.decrement(obj.count)
print obj.count
0
但我希望能够做到这一点:

finalcount = obj(0).increment(?.count).decrement(?.count)

但我不知道是否有什么东西可以代替
来引用正在调用其方法的对象,因为该对象尚未指定名称。

您的对象在当前代码中没有任何贡献。注意类中的方法如何不引用任何对象状态-它们从不使用
self
。最好完全省略
int
参数,而使用
self.count

class foo(object):
    def __init__(self, int):
        self.count = int

    def increment(self):
        return foo(self.count + 1)

    def decrement(self):
        return foo(self.count - 1)
然后,你想写的是:

finalcount = foo(0).increment().decrement()

但是,要回答您最初的问题,无法引用调用链中的“当前”对象。如果要引用中间对象,必须将其指定给变量。

只需在每个方法末尾返回self。短语“fluent interface”可能有助于您的研究。@jonrsharpe嗯,这在OP的示例中并不适用,在OP的示例中创建了一个新实例。该类的任何方法实际上都不会对其实例变量做任何处理。您确定
递增
递减
应该为递增的内容使用参数,而不是递增
自我计数
?你确定他们应该创建一个新的对象实例来修改(或者返回)
self
?@user2357112如果类设计不好,那就不要担心了。一般来说,如果您试图调用的函数确实需要一个参数,并且您要传递的参数恰好是该类的成员,那么是否可能?如果答案是否定的,我同意。我只是想知道。我真的只是拼凑了一个愚蠢的类来问一个真正的问题:有可能引用一个作为链的一部分创建的对象吗。我想问的是pandas.dataframe的具体问题,但我只是想知道,在函数需要参数的情况下,通常能做这样的事情,而你想使用的参数是类的一员。我的最后一段回答了你的问题,不管激励示例的质量如何。谢谢Rob!这真的是我想知道的全部。知道了这一点,我能够去问一个不同的问题,关于我遇到的具体问题,只是在工作中我对这个话题感到好奇。