我遇到了一个我无法解决的有趣/令人沮丧的 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. 仍然使用调用的第一个值我们的工厂函数。
有任何想法吗?