Python Glossary English

Python 3.3+typesпонятие

types.SimpleNamespace

пространства имён

Простой объект-контейнер: атрибуты задаются при создании или потом, через точку. Удобен вместо словаря, когда хочется писать obj.x, а не d['x'].

Синтаксис

types.SimpleNamespace(**kwargs)

В отличие от namedtuple и dataclass, у SimpleNamespace нет фиксированного набора полей: атрибуты можно добавлять и удалять, а перебирать его нельзя. Два объекта равны, если равны их атрибуты, — но поэтому они и не хешируются. vars(ns) отдаёт внутренний словарь. Частый приём — json.loads(..., object_hook=lambda d: SimpleNamespace(**d)), чтобы читать JSON через точку.

Примеры

from types import SimpleNamespace
p = SimpleNamespace(x=1, y=2)
p.z = 3
print(p)  # → namespace(x=1, y=2, z=3)
print(p == SimpleNamespace(x=1, y=2, z=3))  # → True
import json
from types import SimpleNamespace
data = json.loads('{"user": {"name": "Ann"}}',
                  object_hook=lambda d: SimpleNamespace(**d))
print(data.user.name)  # → Ann

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности