如何在类python中的方法内创建类的实例

2024-06-12 16:50:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我的类处理整数列表并计算它们,这样它们就不会有重复出现的值。我实现了一个新的方法'intersect',它接受两个intSet对象,并用两个对象列表(vals)中显示的值创建一个新对象。在

最初,我在方法(而不是对象)内创建一个新列表,以添加在两个列表中找到的int,但是我认为创建一个新对象并将值添加到新对象中的val是合适的。但是我得到了错误NameError: global name 'inSet' is not defined

我的代码是:

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)

    def member(self, e):
        """Assumes e is an integer
           Returns True if e is in self, and False otherwise"""
        return e in self.vals

    def remove(self, e):
        """Assumes e is an integer and removes e from self
           Raises ValueError if e is not in self"""
        try:
            self.vals.remove(e)
        except:
            raise ValueError(str(e) + ' not found')

    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):
        #intersected = []
        intersected = inSet()
        for x in self.vals:
            if x in other.vals:
                #intersected.append(x)
                intersected.insert(x)
        return intersected


a= {-15,-14,-5,-2,-1,1,3,4,11,18}
b= {-12,-3,3,8,12,16,18,20}
set1 = intSet()
set2 = intSet()
[set1.insert(x) for x in a]
[set2.insert(x) for x in a]

print set1.intersect(set2)

额外的问题是,大部分代码是由管理员为MOOC编写的,6.00.1x。我只需要实现'intersect'方法。为什么在list[]大括号中使用字典目的大括号?在


Tags: of对象inselfan列表ifis
1条回答
网友
1楼 · 发布于 2024-06-12 16:50:21

它是intSet,而不是inSet,您在intersect方法中拼错了它。作为一种习惯,最好用大写字母开始上课(虽然没有固定的规则,但这是一种广泛遵守的习惯)。在

关于大括号,它们不仅适用于词典,也适用于Python集合。因此,通过在str帴方法中使用它们,输出结果表明类的实例确实是一种集合。在

相关问题 更多 >