我经常使用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)
)
发布于 2018-06-21 03:49:36
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
发布于 2018-06-21 03:15:39
如果您愿意使用元类,那么是的,这是可能的:
class ror(type):
@classmethod
def __ror__(cls, obj):
print(obj)
class Foo(metaclass=ror):
pass
'a' | Foo
# a
https://stackoverflow.com/questions/50955335
复制相似问题