TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #233 · 7 апр.

import sys print(sys.implementation) Выполнив этот код, вы увидите некий объект namespace с данными о текущей имплементации интерпретатора. Помимо того что эта информация может быть как-либо полезна давайте обратим внимание на то, что это за объект вообще? Узнаем что это за тип >>> type(sys.implementation) <class 'types.SimpleNamespace'> SimpleNamespace это простой тип для реализации неймспейса. Если не знаете что такое неймспейс, то представьте себе некий объект-контейнер, куда можно складывать другие объекты. После чего обращаться к ним через имя контейнера. То есть, к имени объекта добавляется дополнительный уровень имени, что и является пространством имён. По сути, любой модуль и класс является неймспейсом для своего содержимого (если не импортить это содержимое из модуля через "*"). Класс SimpleNamespace позволяет легко добавлять и удалять атрибуты. А также можно передать в конструктор keyword аргументы чтобы сразу создать нужные атрибуты >>> from types import SimpleNamespace >>> conf = SimpleNamespace(key1=1, key2=2) >>> conf.key1 1 >>> setattr(conf, 'key3', 3) или >>> conf.key3 = 3 >>> conf.key3 3 >>> delattr(conf, 'key2') или >>> del conf.key2 >>> conf namespace(key1=1, key3=3) Вот так можно преобразовать словарь в неймспейс: >>> keys_dict = {'k1': 1, 'k2': 2} >>> keys = SimpleNamespace(**keys_dict) >>> keys namespace(k1=1, k2=2) Обратное преобразование через vars >>> vars(conf) {'key1': 1, 'key3': 3} Как это можно использовать? ▫️ красиво оформить "константы" или конфиг. В этом случае, кстати, я бы делал ключи аперкейсом. >>> conf = SimpleNamespace( **json.load(config_file.open()) ) >>> conf.API_HOST "192.168.10.20" ▫️ быстро преобразовать словарь в подобие объекта с доступом к ключам через атрибуты. То есть вместо такой записи: shape['width'] можно будет писать так: shape.width ▫️альтернатива для namedtuple, в которой доступно изменение значения атрибутов. #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #tricks

当前筛选 #tricks清除筛选
sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags