(不要与itertools.chain混淆)
我正在阅读以下内容:http :
//en.wikipedia.org/wiki/Method_chaining
我的问题是: 在python中实现方法链接的最佳方法 是 什么?
这是我的尝试:
class chain():
def __init__(self, my_object):
self.o = my_object
def __getattr__(self, attr):
x = getattr(self.o, attr)
if hasattr(x, '__call__'):
method = x
return lambda *args: self if method(*args) is None else method(*args)
else:
prop = x
return prop
list_ = chain([1, 2, 3, 0])
print list_.extend([9, 5]).sort().reverse()
"""
C:\Python27\python.exe C:/Users/Robert/PycharmProjects/contests/sof.py
[9, 5, 3, 2, 1, 0]
"""
一个问题是调用是否method(*args)
修改self.o
但不返回None
。(那么我应该退货self
还是退货method(*args)
)。
有没有人有更好的实现链接的方法?可能有很多方法可以做到这一点。
我是否应该假设某个方法总是返回,None
所以我可能总是返回self.o
?
我一直在寻找类似的链接Class
功能,但找不到很好的答案,所以这是我做的,并认为这是一种非常简单的链接方式:只需返回self
对象即可。
所以这是我的设置:
Class Car():
def __init__(self, name=None):
self.name = name
self.mode = 'init'
def set_name(self, name):
self.name = name
return self
def drive(self):
self.mode = 'drive'
return self
现在,我可以通过调用以下方式来命名汽车并将其置于行驶状态:
my_car = Car()
my_car.set_name('Porche').drive()
警告 :这仅适用于不打算返回任何数据的类函数。
希望这可以帮助!
问题内容: 在回答前面的一些问题以及最近的工作时,我一直在想为什么Java不支持其内置类中的方法链接。 例如,如果我要创建一个类,可以通过以下方法而不是void来使其 可链接: 内置库为什么不倾向于以这种方式执行操作?方法链接有不利之处吗? 我可能忽略了一些可以解释缺少方法链接的内容,但是任何默认返回void的setter方法都应该返回 对此 的引用(至少在我看来应该如此)。这样可以使以下情况更加
问题内容: 在回答前面的一些问题以及最近的工作时,我一直在想为什么Java不支持其内置类中的方法链接。 例如,如果我要创建一个类,可以通过以下方法而不是void来使其 可链接: 内置库为什么不倾向于以这种方式执行操作?方法链接有不利之处吗? 我可能忽略了一些可以解释缺少方法链接的内容,但是任何默认返回void的setter方法都应该返回 对此 的引用(至少在我看来应该如此)。这样可以使以下情况更加
本文向大家介绍PHP中的方法链接,包括了PHP中的方法链接的使用技巧和注意事项,需要的朋友参考一下 示例 方法链接是Martin Fowler的《领域特定语言》一书中介绍的一种技术。方法链接总结为 使修饰符方法返回宿主对象,以便可以在单个表达式中调用多个修饰符。 看这段非链接/常规代码(从上述书籍中移植到PHP) 通过方法链接,您可以以更紧凑的方式编写上述语句: 为此,您所需要做的就是使用要链接r
本文向大家介绍python链接Oracle数据库的方法,包括了python链接Oracle数据库的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python链接Oracle数据库的方法。分享给大家供大家参考。具体如下: 这里使用python链接Oracle数据库需要引用cx_Oracle库 希望本文所述对大家的Python程序设计有所帮助。
本文向大家介绍python 链接和操作 memcache方法,包括了python 链接和操作 memcache方法的使用技巧和注意事项,需要的朋友参考一下 1,打开memcached服务 2,使用python-memcached模块,进行简单的链接和存取数据 3,其它方法请参考: 以上这篇python 链接和操作 memcache方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家
问题内容: 这个问题已经在这里有了答案 : 如何在Python中断开一系列链接方法? (8个答案) 7年前关闭。 通过阅读PEP-8,我知道您应该将右括号与函数调用中的最后一个参数放在同一行: 可能最好完全避免使用长表达式。但是,如果不希望这样做, 您将如何进行多个链接方法调用? 结束语应该换行吗? 那么无参数方法呢? 如何在不参考中间返回值的情况下将它们写在多行上? 更新 :存在一个重复的问题,