0

我遇到了一个我无法解决的有趣/令人沮丧的 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

它是一个工厂函数,返回具有不同绝对 url 的 EventTag。

如果我们调用它一次一切正常,但是当我们调用它两次(从 for 循环调用)时,1. 和 2. print 语句为我们提供了新视图,但 3. 仍然使用调用的第一个值我们的工厂函数。

有任何想法吗?

4

1 回答 1

0

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

于 2012-11-27T16:40:20.130 回答