Python pprint问题

Yar*_*rin 0 python pprint

我正在使用Google App Engine环境中的User对象,并尝试了以下操作:

pprint(user)
print vars(user)
Run Code Online (Sandbox Code Playgroud)

结果:

pprint(用户)

users.User(email='test@example.com',_user_id='18580000000000')
Run Code Online (Sandbox Code Playgroud)

打印变量(用户)

{'_User__federated_identity': None, '_User__auth_domain': 'gmail.com',
'_User__email': 'test@example.com', '_User__user_id': '1858000000000',
'_User__federated_provider': None}
Run Code Online (Sandbox Code Playgroud)

这里有几个问题(抱歉为多部分):

  1. 为什么我没有看到我对象中的所有变量.它没有显示auth_domain,哪个有价值?
  2. 有没有办法让它列出属性=无?没有一个是合法的价值,为什么它会对那些不存在的属性进行处理?
  3. 有没有办法让pprint在属性之间进行换行?

dcr*_*sta 5

pprint正在打印repr实例,而vars只返回实例__dict__,然后打印其repr.这是一个例子:

>>> class Foo(object):
...     def __init__(self, a, b):
...             self.a = a
...             self.b = b
...     def __repr__(self):
...             return 'Foo(a=%s)' % self.a
...
>>> f = Foo(a=1, b=2)
>>> vars(f)
{'a': 1, 'b': 2}
>>> pprint.pprint(f)
Foo(a=1)
>>> vars(f) is f.__dict__
True
Run Code Online (Sandbox Code Playgroud)

您将看到特殊的方法__repr__在这里(通过所谓pprint()print声明,repr()及其他)明确只包括a成员,而该实例的__dict__同时包含ab,并且通过返回的字典反映vars().