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))
我不知道出了什么问题,但是我确信这与面向对象编程的最基本问题有关。应该有一个简单的解决方法。
答案 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__()