我经常使用ipython shell,并决定使一些整洁的包装函数更易于键入。目标是能够打字AnObject | dump,而不是dump(AnObject)。这仅在ipython shell和dev中。为了使其更容易键入。到目前为止,我已经提出了以下建议:class _dump: def __ror__(_, obj): print(obj)dump = _dump()d = {'test': 123}d | dump哪个输出 {'test': 123}一件小事让我烦恼。在定义之后不初始化类,有没有办法做到这一点?另外,是否可以同时接受| dump样式和功能(| dump(opt=True))
2 回答

米琪卡哇伊
TA贡献1998条经验 获得超6个赞
class _dump:
def __init__(self, opt=False):
self.opt = opt
def __ror__(self, obj):
if self.opt:
print("Opt is TRUE!")
print(obj)
def __call__(self, *args, **kwds):
return _dump(*args, **kwds)
dump = _dump()
>>> 'a' | dump
a
>>> 'a' | dump(opt=True)
Opt is TRUE!
a

MMTTMM
TA贡献1869条经验 获得超4个赞
如果您愿意使用元类,则可以,这是可能的:
class ror(type):
@classmethod
def __ror__(cls, obj):
print(obj)
class Foo(metaclass=ror):
pass
'a' | Foo
# a
添加回答
举报
0/150
提交
取消