Статический класс Python, бесконечно указывающий на себяPython

Программы на Python
Ответить
Anonymous
 Статический класс Python, бесконечно указывающий на себя

Сообщение Anonymous »

Я пытался реализовать класс Env с «динамическими» статическими атрибутами, которые устанавливаются во время выполнения. Моей целью было попытаться имитировать реализацию таких библиотек, как dotenv, избегая при этом необходимости передавать экземпляр Env-объекта (или даже постоянно создавать его экземпляр) в разных модулях. Наконец, я заставил эти две строчки работать, мою цель прошлой ночи:

Код: Выделить всё

Env.load()

Код: Выделить всё

print(Env.vars.foo) == bar
Проблема: мне удалось заставить это работать только с помощью хакерского метода установки Env.vars в экземпляр Env(). Это привело к бесконечной/рекурсивной цепочке адресов памяти. Например, теперь это тоже допустимо: Env.vars.vars.vars. Вот визуализация этого во время отладки:
Изображение

Я подумал, что это мило, и подумал, что наконец-то нашел работающее решение. Полагаю, можно было бы оставить все как есть, поскольку адрес памяти все тот же повторяющийся. Но это похоже на нечто большее, чем просто запах кода, и кажется очень неправильным. Но я не могу всю жизнь найти «правильный» способ реализации того, что я хочу.
Вот моя текущая реализация:
Изображение

...
Это чудовище на самом деле ок, даже если хакерски? Есть ли другой способ сделать это, сохраняя при этом Env.vars.forever действительным кодом?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -at-itself
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»