为了账号安全,请及时绑定邮箱和手机立即绑定

无需初始化类的Python __ror__

无需初始化类的Python __ror__

侃侃尔雅 2021-04-02 15:10:14
我经常使用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


查看完整回答
反对 回复 2021-04-09
?
MMTTMM

TA贡献1869条经验 获得超4个赞

如果您愿意使用元类,则可以,这是可能的:


class ror(type):

     @classmethod

     def __ror__(cls, obj):

         print(obj)


class Foo(metaclass=ror):

    pass


'a' | Foo


#  a


查看完整回答
反对 回复 2021-04-09
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号