创建类列表不允许重复条目

2024-04-26 17:57:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个不允许重复入口的类

class QSet(list):
    def __init__(self,*args):
        super(QSet, self).__init__(args[0])
        self=list(set(self))  

当尝试测试类时,没有删除重复的条目

d=["a","b","a","z","a"]
z=QList(d)       

print d  
print z

有什么解决这个问题的建议吗 谢谢


Tags: selfinitdefargs条目建议listclass
3条回答

你知道^{}正是你正在构建的类,对吧?你知道吗

>>> s = set([1,2,3,3,3])
>>> s.add(4)
>>> s
set([1, 2, 3, 4])
>>> s.add(4)
>>> s
set([1, 2, 3, 4])

重新分配self实际上并不会改变对象(您只是将标识符self重新绑定到一个新对象)。您可以将行更改为:

    self[:] = list(set(self))  

只需对代码做一点小小的更改,您就可以随心所欲:

class QSet(list):
    def __init__(self, a):
        super(QSet, self).__init__(list(set(a)))

我改变了构造函数参数的使用方式,因为接受任意参数是很奇怪的,但是坚持至少有一个参数,而忽略其余的参数。你知道吗

相关问题 更多 >