【问题标题】:having issues overriding the __add__ operator to return tuples python/django在覆盖 __add__ 运算符以返回元组 python/django 时遇到问题
【发布时间】:2012-02-01 18:29:53
【问题描述】:

我不能完全确定问题出在哪里,可能是语法或 django 返回的查询集我不太明白。

Class1(models.Model):
    ...
    def __add__(self,other)
        return other + ({'attribute': value}, ..)

我希望类之间的加法将返回 1 个包含所有对象的元组并放入其中。 因此,我不得不避免使用 sum() 函数,因为它正在寻找整数。

Class Summate():
    @staticmethod
    def sum_tuples(items)
        return reduce(lambda y,x: x+y, items)


eg_list = Class1.objects.all()
values = Summate.sum_tuples(eg_list)

我得到一个 TypeError: reduce() of empty sequence with no initial value。

更新:我的清单是空的。我解决了这个问题并收到了这个错误

TypeError: +: 'dict' 和 'dict' 的操作数类型不受支持 但它不应该附加元组而不是字典吗?

有什么想法吗?我是不是完全错了?

谢谢,

【问题讨论】:

  • eg_list 现在不是 QuerySet 对象了吗?您应该使用list(eg_list) 将其设为真实列表
  • @user334796,如果您遇到该错误,我只能想象您在粘贴字典后没有逗号?

标签: python django add


【解决方案1】:

您的过滤器必须不返回任何结果。我刚刚测试了你的代码,它可以工作。

【讨论】:

  • 你是对的,代码很好,列表是空的,通过在尾随 dict 后面附加一个 ',' 来解决 dict 错误。谢谢Yuji,我有一次要疯了=P
猜你喜欢
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多