Acesso a atributos do tipo objeto para dicionário aninhado

Estou utilizando um pacote que retorna um dicionário aninhado. Parece estranho acessar esse objeto de retorno nos meus métodos de classe com a sintaxe do dicionário, quando todo o resto está na sintaxe do objeto. A pesquisa me levou aos pacotes bunch / neobunch, que parecem alcançar o que estou procurando. Também vi sugestões de nomes nomeados, mas eles não suportam facilmente atributos aninhados e a maioria das soluções depende do uso de dicionários dentro do nome nomeado para aninhamento.

Qual seria uma maneira mais natural de conseguir isso?

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)

questionAnswers(2)

yourAnswerToTheQuestion