“baby”%{“babe”:“bebe”}。这怎么可能有用?

时间:2013-06-28 10:49:28

标签: python

以下是Django中类的方法中的一行:

url = self.success_url % self.object.__dict__

然后我尝试了一个例子:

>>> "baby" % {"babe": "bebe"}
"baby"

这怎么可能有用?

4 个答案:

答案 0 :(得分:10)

在这种情况下,{p> %用于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等时,这非常有用。