以下是 Django 中一个类的方法中的一行:
url = self.success_url % self.object.__dict__
然后我尝试了一个例子:
>>> "baby" % {"babe": "bebe"}
"baby"
这怎么可能有用?
以下是 Django 中一个类的方法中的一行:
url = self.success_url % self.object.__dict__
然后我尝试了一个例子:
>>> "baby" % {"babe": "bebe"}
"baby"
这怎么可能有用?
%
在这种情况下被用于String Formatting。因为“baby”这个词没有%
s,所以这个词根本没有被修饰。
在您的变量示例中url
,self.success_url
可能类似于"hello %s"
并且self.object.__dict__
可能是{"test": "three"}
。很简单,这将打印:
hello {'test': 'three'}
请注意,如果您打算使用这样的东西,您应该使用.format()
:
>>> d = {'baby':'bebe'}
>>> "hello {[baby]}".format(d)
'hello bebe'
您可以像这样使用 Python字符串格式:
print "%(foo)s is good" % {"foo": "bar"}
> bar is good
您的示例没用,但请尝试:
"Hello, my name is %(babe)s" % { 'babe' : 'bebe'}
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 等时,这很有用。