gpt4 book ai didi

python - python中的方法链接

转载 作者:IT老高 更新时间:2023-10-28 20:32:04 26 4
gpt4 key购买 nike

(不要与 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

最佳答案

有一个很方便的Pipe图书馆,这可能是您问题的答案。例如::

seq = fib() | take_while(lambda x: x < 1000000) \
| where(lambda x: x % 2) \
| select(lambda x: x * x) \
| sum()

关于python - python中的方法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com