Я написал простой декоратор, который печатает переданную ему функцию (например, "foo"), а затем декорирую ее саму себя. Итак, наконец, он печатает обе написанные функции.
Недавно я прочитал о квинах и немного застрял с его точным определением. Например, согласно этому источнику, quine "должен распечатать именно те инструкции, которые программист написал как часть программы».
Итак, мой вопрос: могу ли я рассматривать написанную программу как квайн?
def decorate(function):
from inspect import getsourcelines
def wrapper(*args, **kwargs):
for line_num, code_line in enumerate(getsourcelines(function)[0]):
print(code_line)
return wrapper
@decorate
def foo(bar1, bar2=777):
print("bar")
foo(None)
decorate(decorate)(decorate)
точный вывод:
@decorate
def foo(bar1, bar2=777):
print("bar")
def decorate(function):
from inspect import getsourcelines
def wrapper(*args, **kwargs):
for line_num, code_line in enumerate(getsourcelines(function)[0]):
code_line = code_line.replace('\n', '')
print(code_line)
return wrapper