猿问

无需初始化类的Python __ror__

我经常使用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))


侃侃尔雅
浏览 338回答 2
2回答

米琪卡哇伊

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

如果您愿意使用元类,则可以,这是可能的:class ror(type):     @classmethod     def __ror__(cls, obj):         print(obj)class Foo(metaclass=ror):    pass'a' | Foo#  a
随时随地看视频慕课网APP

相关分类

Python
我要回答