【发布时间】:2017-01-23 23:33:02
【问题描述】:
我找到了这个method chaining in python,但即使有了它我也无法理解 Python 中的方法链接。
这里的目标有两个:解决编码问题和理解方法链(鉴于我对可调用对象仍然不是 100% 有信心)。
下到问题定义。
我想要一个有两种方法的类:一种设置对象的参数 = 'line',另一种覆盖为 'bar'。
这是我目前得到的:
class foo():
def __init__(self, kind=None):
self.kind = kind
def __call__(self, kind=None):
return foo(kind=kind)
def my_print(self):
print (self.kind)
def line(self):
return self(kind='line')
def bar(self):
return self(kind='bar')
遗憾的是,使用此代码我可以实现我的目标
a = foo()
a.bar().line().bar().bar().line().my_print()
但我想通过编写这段代码来获得相同的结果
a = foo()
a.bar.line.bar.bar.line.my_print()
我如何实现这一目标?我想我定义 __call__ 方法的方式有问题。提前感谢您的帮助。
【问题讨论】: