我定义了一个Set()函数,如下所示。该代码生成一个TypeError表示:“ Set()不带参数”

时间:2019-02-18 02:52:11

标签: python object

class Set:
    def _init_(self, values=None):
        self.dict = {}
        if values is not None:
            for value in values:
                self.add(value)

    def _repr_(self):
        return "Set:"+str(self.dict.keys())

    def add(self, value):
        self.dict[value] = True

    def contains(self,value):
        return value in self.dict

    def remove(self,value):
        del self.dict[value]


s = Set([1,2,3])
s.add(4)
print (s.contains(4))
s.remove(3)
print (s.contains(3))

我不知道出了什么问题,但是我确信这与面向对象编程的最基本问题有关。应该有一个简单的解决方法。

1 个答案:

答案 0 :(得分:0)

正如@James所评论的那样,您试图定义的魔术方法需要 double 下划线。使用它,它应该可以工作:

class Set:
    def __init__(self, values=None):
        self.dict = {}
        if values is not None:
            for value in values:
                self.add(value)

    def __repr__(self):
        return "Set:"+str(self.dict.keys())
. .  .

链接到相关文档:__init__()__repr__()