【发布时间】:2017-02-07 23:26:54
【问题描述】:
假设我获得了以下课程:
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)
但我不知道是否有什么可以代替? 来引用正在调用方法的对象,因为该对象尚未被分配名称。
【问题讨论】:
-
只是
return self在每个方法的末尾。短语“流畅的界面”可能有助于您的研究。 -
@jonrsharpe 好吧,这在创建新实例的 OP 示例中并不完全有效。
-
这个类的所有方法实际上都没有对它的实例变量做任何事情。你确定
increment和decrement应该对增加什么而不是增加self.count进行争论吗?你确定他们应该创建一个修改(并可能返回)self的新对象实例吗? -
@user2357112 如果类设计不好,那么请记住它。一般来说,如果您尝试调用的函数确实需要一个参数,并且您要传递的参数恰好是该类的成员,这可能吗?如果答案是否定的,我可以接受。我只是想知道。
标签: python