Учитывая динамический Python, я буду потрясен, если это не так возможно:
Я хотел бы изменить реализацию sys.stdout.write
.
Я получил эту идею от ответа на другой вопрос: qaru.site/info/547740/...
Я попытался просто написать это:
original_stdoutWrite = sys.stdout.write
def new_stdoutWrite(*a, **kw):
original_stdoutWrite("The new one was called! ")
original_stdoutWrite(*a, **kw)
sys.stdout.write = new_stdoutWrite
Но он говорит мне AttributeError: 'file' object attribute 'write' is read-only
.
Это хорошая попытка не дать мне сделать что-то потенциально (возможно) глупо, но я бы очень хотел пойти дальше и сделать это в любом случае. Я подозреваю, что у интерпретатора есть какая-то таблица поиска, которую я могу изменить, но я не мог найти ничего подобного в Google. __setattr__
тоже не работал - он вернул ту же самую ошибку, что и атрибут, доступный только для чтения.
Я специально ищу решение Python 2.7, если это важно, хотя нет никаких оснований сопротивляться бросанию ответов, которые работают для других версий, так как я подозреваю, что другие люди в будущем будут искать здесь похожие вопросы относительно других версий.