Доступ к объектно-подобным атрибутам для вложенного словаря

Я использую пакет, который возвращает вложенный словарь. Мне неудобно обращаться к этому возвращаемому объекту в моих методах класса с синтаксисом словаря, когда все остальное в синтаксисе объекта. Поиск привел меня к пакетам пакетов / neobunch, которые, кажется, достигают того, что я ищу. Я также видел предложенные именованные кортежи, но они не могут легко поддерживать вложенные атрибуты, и большинство решений полагаются на использование словарей в именованном кортеже для вложения.

Что было бы более естественным способом достижения этого?

data = {'a': 'aval', 'b': {'b1':{'b2a':{'b3a':'b3aval','b3b':'b3bval'},'b2b':'b2bval'}} }

print(data['b']['b1']['b2a']['b3b'])  # dictionary access
# print(data.b.b1.b2a.b3b)  # desired access

import neobunch
data1 = neobunch.bunchify(data)
print(data1.b.b1.b2a.b3b)

Ответы на вопрос(2)

Ваш ответ на вопрос