gpt4 book ai didi

Python:新类、继承和重写

转载 作者:行者123 更新时间:2023-11-30 23:10:24 25 4
gpt4 key购买 nike

我正在尝试在Python中创建一个新类MyClass,以UserList作为其基类,但我希望重写__add__、append和extend函数以避免重复,这样如果项目已经出现在列表中,它们不会被添加到列表中。我首先从集合中导入 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)

最佳答案

执行 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)

关于Python:新类、继承和重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com