我正在使用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)
这里有几个问题(抱歉为多部分):
auth_domain,哪个有价值?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__同时包含a和b,并且通过返回的字典反映vars().
| 归档时间: |
|
| 查看次数: |
3104 次 |
| 最近记录: |