带工厂功能的可变分辨率

时间:2012-11-27 16:28:29

标签: python django

我遇到了一个有趣/令人沮丧的Python问题,我无法解决。 我们有这个代码:

def eventtag_with_view_factory(view):
    print "==1", view

    class Cls(models.EventTag):

        # means this class does not make django change the database
        class Meta:
            proxy = True

        print "==2", view

        @permalink
        def get_absolute_url(self):
            print "==3", view
            return ("search_query_view", (),
                {'query': quote('#') + self.name, 'view': view})

    return Cls

这是一个返回不同EventTag的工厂函数 绝对的网址。

如果我们称之为一切正常,但我们称之为两次 (它从for循环调用)1.和2. print语句给我们 新视图,但3.仍然使用我们调用的第一个值 工厂功能。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果没有看到更多代码,我唯一的猜测是你会看到类似这样的内容:http://me.veekun.com/blog/2011/04/24/gotcha-python-scoping-closures/