首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不初始化类的Python __ror__

不初始化类的Python __ror__
EN

Stack Overflow用户
提问于 2018-06-21 03:03:20
回答 2查看 81关注 0票数 1

我经常使用ipython shell,并决定让一些整洁的包装器函数更易于输入。目标是能够输入AnObject | dump,而不是dump(AnObject)。这只在一个ipython shell中,并且在dev中。以使其更容易键入。

到目前为止,我已经想出了这个:

代码语言:javascript
复制
class _dump:
    def __ror__(_, obj):
        print(obj)
dump = _dump()
d = {'test': 123}
d | dump

哪一项输出{'test': 123}

一件小事惹恼了我..有什么方法可以在定义后不初始化类的情况下做到这一点吗?另外,是否可以同时接受| dump样式和函数(| dump(opt=True))

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-21 03:49:36

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2018-06-21 03:15:39

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

代码语言:javascript
复制
class ror(type):
     @classmethod
     def __ror__(cls, obj):
         print(obj)

class Foo(metaclass=ror):
    pass

'a' | Foo

#  a
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50955335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档