0

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

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

任何解决这个问题的建议谢谢

4

4 回答 4

4

您可以通过对代码稍作更改来做您想做的事情:

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

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

于 2012-12-13T19:01:07.203 回答
3

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

    self[:] = list(set(self))  
于 2012-12-13T19:00:25.607 回答
0

你知道这set正是你正在建立的课程,对吧?

>>> 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])
于 2012-12-13T19:03:19.217 回答
0

Python中已经有一个类。它被称为集

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

print d  
print z

这对你有用吗?

于 2012-12-13T19:04:57.740 回答