我有一个Python,一个python类,我重载了>>操作符,这样我就可以创建一个准“连接”接口。理想实践中的一个例子是这样的。
from module import myclass
a = myclass()
b = myclass()
c = myclass()
a >> b >> c到目前为止我的重载函数非常简单:
def __rshift__(self, right):
self.chain[right] = None
return self当a、b和c像这样连接在一起时,想法是a将b存储在哈希表中,b将c存储在哈希表中。
问题在于,在实践中,a也会接收c并将其存储在哈希表中。我只想让a知道b,这样以后我就可以通过遍历a的键从b遍历c。
我可以通过像这样重构代码来解决这个问题:
a >> b
b >> c那么我在这里错过了什么呢?我如何更改我的实现,以便您可以在线指定整个系列的连接,或者这永远不可能实现?
发布于 2020-10-14 20:12:29
在设置散列之后,您可以返回right,这样链接行为就可以应用于下一个类对象。
def __rshift__(self, right):
self.chain[right] = None
return right然后,例如在a >> b >> c之后
>>> a
<__main__.myclass object at 0x000002128A755388>
>>> b
<__main__.myclass object at 0x000002128A70BBC8>
>>> c
<__main__.myclass object at 0x000002128A74BC48>
>>> a.chain
{<__main__.myclass object at 0x000002128A70BBC8>: None} # stored b
>>> b.chain
{<__main__.myclass object at 0x000002128A74BC48>: None} # stored c
>>> c.chain
{}现在a有一个b条目,b有一个c条目,c为空
https://stackoverflow.com/questions/64352863
复制相似问题