__add__方法禁止重复项目

时间:2013-09-13 18:31:07

标签: python function methods built-in

我在UserList下创建了一个名为UList的新类,它覆盖了__add__方法 - 它不允许将重复项添加到列表中。但是当我尝试运行它时,我没有得到预期的结果:

from collections import UserList

class UList(UserList):
  def append(self,ap_item):
    for ap in ap_item:
        if ap in self:
          raise ValueError(repr(ap) + " already exists in list")
        else:
          return UserList.append(self, ap_item)
  def __add__(self,ad_item):
    for ad in ad_item:
        if ad in self:
          raise ValueError(repr(ad) + " already exists in list")
        else:
          return UserList.__add__(self,ad_item)
  def extend(self, ex_item):
    for ex in ex_item:
        if ex in self:
          raise ValueError(repr(i) + " already exists in list")
        else:
          return UserList.extend(self,ex_item)

如何才能正确执行此方法?

1 个答案:

答案 0 :(得分:1)

您的__add__函数缺少return语句。如此缺少的任何函数都会隐式返回None。这就解释了为什么你的函数返回None。

试试这个:

return UserList.__add__(self,ad_item)