总之,我已经这样做了几天了,但仍然无法让这种重载发挥作用。
Error:
setA: {-10,-8,3,5,10,17,20}
intSet.len(setA):
TypeError: __len__() takes exactly 2 arguments (1 given)
代码:
class intSet(object):
"""An intSet is a set of integers
The value is represented by a list of ints, self.vals.
Each int in the set occurs in self.vals exactly once."""
def __init__(self):
"""Create an empty set of integers"""
self.vals = []
def insert(self, e):
"""Assumes e is an integer and inserts e into self"""
if not e in self.vals:
self.vals.append(e)
>>>>>> more methods left out for brevity <<<<<<<<<<
def __len__(self, s):
""" Returns the length of the string provided"""
return len(s)
任何帮助将不胜感激...
最佳答案
__len__
魔术方法不接受额外的参数。你的代码应该是
class IntSet(object):
"""An intSet is a set of integers
The value is represented by a list of ints, self.vals.
Each int in the set occurs in self.vals exactly once."""
def __init__(self):
"""Create an empty set of integers"""
self.vals = []
>>>>>> more methods left out for brevity <<<<<<<<<<
def __len__(self):
"""Returns the number of elements in this set"""
return len(self.vals)
然后在您的代码中以这种方式使用它
myset = IntSet()
print 'My set contains ', len(myset)
myset.insert(9)
myset.insert(10)
print 'My set contains ', len(myset)
myset.insert(9)
print 'My set contains ', len(myset)
关于Python - 无法重载工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572503/