簡體   English   中英

Python __ror__沒有初始化類

[英]Python __ror__ without initializing class

我經常使用ipython shell,並決定使一些整理包裝函數更容易輸入。 目標是能夠鍵入AnObject | dump 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樣式,以及作為函數( | dump(opt=True)

如果您願意使用元類,那么可以:

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

class Foo(metaclass=ror):
    pass

'a' | Foo

#  a
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM