Класс бутылки FormsDict не имеет определенного метода __str__
или __repr__
, поэтому при его печати вы просто получаете представление по умолчанию: <bottle.FormsDict object at 0x7fa0661aacf8>
.
Однаковы можете получить доступ к его ключам и значениям, как обычный словарь Python:
>>> fd = FormsDict(a=1, b='2')
>>> fd
<bottle.FormsDict object at 0x7fa0661aae80>
>>> fd['a']
1
>>> fd.get('b')
'2'
>>> fd.keys()
dict_keys(['a', 'b'])
>>> list(fd.values())
[1, '2']
>>> list(fd.items())
[('a', 1), ('b', '2')]
Если вы хотите иметь возможность просматривать содержимое FormsDict
, как обычный словарь, вы можете создать его подкласс и предоставить свой собственный__repr__
и __str__
методы.Этот класс предоставляет базовые реализации *
class PrettyFormsDict(FormsDict):
def __repr__(self):
# Return a string that could be eval-ed to create this instance.
args = ', '.join('{}={!r}'.format(k, v) for (k, v) in sorted(self.items()))
return '{}({})'.format(self.__class__.__name__, args)
def __str__(self):
# Return a string that is a pretty representation of this instance.
args = ' ,\n'.join('\t{!r}: {!r}'.format(k, v) for (k, v) in sorted(self.items()))
return '{{\n{}\n}}'.format(args)
>>> PrettyFormsDict = FD.PrettyFormsDict
>>> fd = PrettyFormsDict(a=1, b='2', c='foo')
>>> fd
PrettyFormsDict(a=1, b='2', c='foo')
>>> print(fd)
{
'a': 1 ,
'b': '2' ,
'c': 'foo'
}
* FormsDict
на самом деле MultiDict , то есть для ключа можноимеют несколько разных значений.Красивая печать таких значений оставлена читателю в качестве упражнения.