Ada*_*hes 37 python string string-formatting
我有一个属性的Python对象a,b,c.
我仍然使用旧的字符串格式,所以我通常手动打印:
print 'My object has strings a=%s, b=%s, c=%s' % (obj.a, obj.b, obj.c)
Run Code Online (Sandbox Code Playgroud)
最近,我的琴弦已获得超级长,我宁愿能够简单地传递对象转换成字符串格式的功能,是这样的:
print 'My object has strings a=%a, b=%b, c=%c'.format(obj)
Run Code Online (Sandbox Code Playgroud)
但是,语法不正确.这可能吗?
iCo*_*dez 55
您可以.attribute_name在格式字段本身内使用表示法:
print 'My object has strings a={0.a}, b={0.b}, c={0.c}'.format(obj)
Run Code Online (Sandbox Code Playgroud)
以下是演示:
>>> class Test(object):
... def __init__(self, a, b, c):
... self.a = a
... self.b = b
... self.c = c
...
>>> obj = Test(1, 2, 3)
>>> 'My object has strings a={0.a}, b={0.b}, c={0.c}'.format(obj)
'My object has strings a=1, b=2, c=3'
>>>
Run Code Online (Sandbox Code Playgroud)
但请注意,执行此操作时,您需要对格式字段进行编号.此外,正如您所看到的,该str.format函数的格式字段用花括号表示{...},而不是%符号.
有关更多信息,请参阅Python中的格式字符串语法.
Geo*_*ing 14
我认为最好使用vars()来访问对象的属性dict而不是usng __dict__.
所以你可以这样做:
"My object has strings a={a}, b={b}, c={c}".format(**vars(obj))
Run Code Online (Sandbox Code Playgroud)
有关vars()优选原因的更多背景__dict__,请参阅问题的答案使用dict或vars()?.
正如@igniteflow写的一篇评论:
'My object has strings a={a}, b={b}, c={c}'.format(**obj.__dict__)
Run Code Online (Sandbox Code Playgroud)
我有限的python理解:.__dict__是一个包含所有实例属性的dict,**运算符基本上将它们解包并将它们作为key = value args添加到方法中
| 归档时间: |
|
| 查看次数: |
17316 次 |
| 最近记录: |