Python:新类,继承和覆盖

时间:2015-06-08 02:47:06

标签: python class if-statement methods

我正在尝试使用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)

1 个答案:

答案 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)