首页 > 解决方案 > Python __ror__ 没有初始化类

问题描述

我经常使用 ipython shell,并决定让一些 tidies 包装函数更易于键入。目标是能够打字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))

标签: python

解决方案


如果您愿意使用元类,那么是的,有可能:

class ror(type):
     @classmethod
     def __ror__(cls, obj):
         print(obj)

class Foo(metaclass=ror):
    pass

'a' | Foo

#  a

推荐阅读