我正在尝试使用UserList作为基类在Python,MyClass中创建一个新类,但是我希望覆盖__add__
,追加和扩展函数以避免重复,这样如果项目已经出现在列表中,它们不会被添加到它中。
我首先从集合中导入UserList,然后使用以下代码。它部分起作用,因为如果我尝试使用列表中已有的内容添加,追加或扩展,它会返回消息'此项目已经在您的列表中'它没有被添加。但是,如果我尝试添加新内容,它会进入无限循环,我必须关闭窗口。任何建议将被认真考虑。我目前正在学习Python,对编程很新。
class MyList(UserList):
def __int__(self, list):
self.list=list
def __add__(self, item):
if item in self:
print('This item is already in your list')
else:
return self+[item]
def append(self, item):
if item in self:
print('This item is already in your list')
else:
return self.append(item)
def extend(self, item):
if item in self:
print('This item is already in your list')
else:
return self.extend(item)
答案 0 :(得分:3)
正在添加self+[item]
,因此它再次调用__add__
,然后再尝试拨打__add__
,依此类推。
您应该super(MyList, self).__add__([item])
来调用基类实现。
示例:
def append(self, item):
if item in self:
print('This item is already in your list')
else:
return super(MyList, self).append(item)