Правильно распечатать класс как словарь

У меня есть словарь словарей классов объектов, например, так:

mydict = {'key1':{'key2':myclass('myclass1')}}

Теперь объект myclass содержит dict что я хочу использовать в качестве его __repr__ за pprint цели. Так что я:

class myclass:
    def __init__(self,name):
        self.name = name
        self.some_dictionary = {1:{1:1,2:2,3:3,4:4},100:{100:100,200:200,300:300},1000:{1000:1000,2000:2000,3000:3000},10000:{10000:10000}}
    def __repr__(self):
        import pprint
        return pprint.pformat(self.some_dictionary)

Проблема в том, что когда я делаю

pprint(mydict)

отступ неправильный. Ключи myclass.some_dictionary в конечном итоге на том же уровне отступа, что и ключи mydict, Вот так:

mydict = {'key1':{'key11':myclass('c1'),'key12':myclass('c11')},'key2':{'key21':myclass('c2'),'key22':myclass('c21')}}
pprint.pprint(mydict)

выход:

{'key1': {'key11': {1: {1: 1, 2: 2, 3: 3, 4: 4},
 100: {100: 100, 200: 200, 300: 300},
 1000: {1000: 1000, 2000: 2000, 3000: 3000},
 10000: {10000: 10000}},
          'key12': {1: {1: 1, 2: 2, 3: 3, 4: 4},
 100: {100: 100, 200: 200, 300: 300},
 1000: {1000: 1000, 2000: 2000, 3000: 3000},
 10000: {10000: 10000}}},
 'key2': {'key21': {1: {1: 1, 2: 2, 3: 3, 4: 4},
 100: {100: 100, 200: 200, 300: 300},
 1000: {1000: 1000, 2000: 2000, 3000: 3000},
 10000: {10000: 10000}},
          'key22': {1: {1: 1, 2: 2, 3: 3, 4: 4},
 100: {100: 100, 200: 200, 300: 300},
 1000: {1000: 1000, 2000: 2000, 3000: 3000},
 10000: {10000: 10000}}}}

Есть ли способ получить pprint выровнять все так, как если бы я просто передал ему словарь (т.е. 1 выровнен с 100, 1000, так далее.)?

0 ответов

Другие вопросы по тегам