[英]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.