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

TGINSIGHT SIMILAR POSTS

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

Изворен канал @pythonotes · Post #168 · 19 окт.

Давайте немного прокачаем стандартный словарь. Зачем? А потому что Python это позволяет))) Добавим возможность работать с ключами словаря как с атрибутами объекта. Для этого нам потребуется определить три метода: __getattr__ - получение атрибута __setattr__ - изменение атрибута __delattr__ - удаление атрибута Наследоваться будем от стандартного словаря class _AttribDict(dict): def __getattr__(self, name): return self[name] def __setattr__(self, name, value): self[name] = value def __delattr__(self, name): del self[name] Подменяем стандартный словарь в одну строку __import__('builtins').__dict__['dict'] = _AttribDict Всё, можно тестить 😬 >>> obj = dict(name='Object1', id=14) >>> print(obj) {'name': 'Object1', 'id': 14} Выглядит как обычный словарь >>> obj['name'] = 'Thing 1' >>> print(obj['name']) Thing 1 Изменение ключей работает. То есть стандартное поведение не сломали. А теперь попробуем обратиться к атрибутам >>> print(obj.name) Thing 1 Пробуем изменить ключ через атрибут >>> obj.name = 'Thing 2' >>> print(obj.name) Thing 2 И удаляем ключ через атрибут del obj.name print(obj) {'id': 14} Теперь с ключами словаря можно работать и обычным способом: dict['key'] и как с атрибутами: dict.key Выглядит интересно. Но помните , если Python позволяет это делать, этоне значит что это можно делать👮‍♂️! Подобные эксперименты лучше оставить для развлечения и не допускать в прод. Хорошая разминка, не более того. #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