<br style="page-break-before: always">
在定义下面的课程后,我想测试一下。但是因为之前我测试过s1.intersect(s3),我似乎将s1.intersect()永久存储为EmptyError。我继续使用任何s1.intersect()标注得到相同的结果(如下所示)。我能做些什么使得“EmptyError”与s1.intersect方法相关联? (我想我最初在我的第一个代码版本中使用了“try and except:print(”EmptyError“)。)
我是OOP和python的新手,并试图通过这些实践更好地理解课程。
class intSet(object):
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)
def __str__(self):
"""Returns a string representation of self"""
self.vals.sort()
return '{' + ','.join([str(e) for e in self.vals]) + '}'
def intersect(self,other):
"""Define an intersect method that returns a new intSet
containing elements that appear in both sets. """
newset = intSet()
for i in self.vals:
for j in other.vals:
if i==j:
newset.insert(j)
return newset
我没有保存我的第一个版本print(s1)
{1,2,3}
print(s5)
{2,3}
print(s1.intersect(s5))
EmptyError
None
。这就是我记得它的方式。
def intersect
然后我跑进了concole
def intersect(self,other):
"""Define an intersect method that returns a new intSet
containing elements that appear in both sets. """
try:newset = intSet()
for i in self.vals:
for j in other.vals:
if i==j:
newset.insert(j)
return newset
except:
print("EmptyError")
....输出这个
s1 = intSet()
s1.insert(1)
s1.insert(2)
print(s1)
s2 = intSet()
s2.insert(2)
s2.insert(4)
print(s2)
s3 = s1.intersect(s2)
print(s3)
从那时起,{1,2}
{2,4}
EmptyError
None
始终与EmptyError
标注相关联。即使我修改了我的类定义后,也改变了交叉方法的新变量名。 s1.intersect()
只是不会离开s1.intersect(任何东西)。