Вместо изменения оформленной функции вы можете создать другой вызываемый класс, который будет возвращать его экземпляры вместо функции:
#codeexample
#codeexample
lass CallableWithOrig:
def __init__(self, to_call, orig):
self._to_call = to_call
self._orig = orig
def __call__(self, *args, **kwargs):
return self._to_call(*args, **kwargs
@property
def orig(self):
if isinstance(self._orig, type(self)):
return self._orig.orig
else:
return self._orig
class SavingOrig:
def __init__(self, another_decorator):
self._another = another_decorator
def __call__(self, f):
return CallableWithOrig(self._another(f), f)
saving_orig = SavingOrig
Вы можете добавлять символы Юникода в строковый литерал не только по его номеру, но и по его имени.
#codeexample
>>> '\N{EM DASH}'
'—'
>>> '\u2014'
'—'
Он также совместим с f-строками:
>>> width = 800
>>> f'Width \N{EM DASH} {width}'
'Width — 800'
#codeexample
>>> '\N{EM DASH}'
'—'
>>> '\u2014'
'—'
Он также совместим с f-строками:
>>> width = 800
>>> f'Width \N{EM DASH} {width}'
'Width — 800'