以下是Django中类的方法中的一行:
url = self.success_url % self.object.__dict__
然后我尝试了一个例子:
>>> "baby" % {"babe": "bebe"}
"baby"
这怎么可能有用?
答案 0 :(得分:10)
%
用于String Formatting。因为“baby”这个词中没有%
,所以这个词根本没有修改。
在变量url
的示例中,self.success_url
可能类似于"hello %s"
,而self.object.__dict__
可能是{"test": "three"}
。如此简单,那将打印出来:
hello {'test': 'three'}
请注意,如果您打算使用此类内容,则应使用.format()
:
>>> d = {'baby':'bebe'}
>>> "hello {[baby]}".format(d)
'hello bebe'
答案 1 :(得分:4)
您可以像这样使用Pythons string formatting:
print "%(foo)s is good" % {"foo": "bar"}
> bar is good
答案 2 :(得分:2)
你的例子没用,但试试:
"Hello, my name is %(babe)s" % { 'babe' : 'bebe'}
答案 3 :(得分:2)
url可以使用任何对象实例属性:
class X(object):
success_url = "http://goo.gl/%(x)s"
def __init__(self):
self.x = 13
def get_url(self):
return self.success_url % self.object.__dict__
>>> X().get_url()
'http://goo.gl/13'
可以修改这些属性
>>> x = X()
>>> x.x = 174
>>> X().get_url()
'http://goo.gl/174'
因此,当url依赖于实例属性(在我的示例中)或实例object
属性(在您的属性中),例如文档字段或id等时,这非常有用。