在Python_RORY_中不初始化类怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我经常使用IPythonshell,并决定使一些整洁的包装函数更易于键入。目标是能够键入AnObject | dump,而不是dump(AnObject)。这只在IPython shell 和 dev中。

到目前为止,我想出了如下结论:

class _dump:
    def __ror__(_, obj):
        print(obj)
dump = _dump()
d = {'test': 123}
d | dump

输出{'test': 123}

是否有任何方法可以做到这一点,而不初始化定义后的类?

提问于
用户回答回答于
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
用户回答回答于

如果你愿意使用元类, 可以试试:

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

class Foo(metaclass=ror):
    pass

'a' | Foo

#  a

扫码关注云+社区

领取腾讯云代金券