来自Class定义的变量已被永久存储(python类)

时间:2017-10-19 03:58:51

标签: python class

<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(任何东西)。

0 个答案:

没有答案