如何在python中使用Set方法创建类?

时间:2019-05-17 20:58:05

标签: python python-3.x class set

我想创建一个类Set,它具有相同的set属性,并且我想实现__str __(self)方法,该方法应该以字符串形式将表示形式返回给该类的对象 例如:

class Set():

    def __init__(self):


    def __str__(self):
        '''Repräsentation als String zu einem Objekt der Klasse'''


    def __add__(self, other):
        '''Vereinigung A∪B (union(A,B))'''

    def __and__(self, other):
        '''Schnitt A∩B (intersect(A,B))'''

    def __sub__(self, other):
        '''Komplement A∖B(complement(A,B))'''

    def subset(self, other):
        '''A.subset(f)=a∈A|auswahl(a) ist wahr'''


    def __iter__(self):
        ''' die Elemente Ihrer Menge zu iterieren'''

    def __contains__(self, item):
        '''zu prüfen, ob ein Element e in Ihrer Menge enthalten ist'''

    def __len__(self):
        '''die Mächtigkeit Ihrer Menge zu bestimmen'''

    def __getitem__(self, item):
        '''ein Element aus Ihrer Menge explizit abzufragen'''

1 个答案:

答案 0 :(得分:0)

正如丹尼尔·罗斯曼(Daniel Roseman)在评论中指出的那样,Python的内置set类型已经可以满足您的所有需求。

从技术上讲,您的类应该实现__repr__方法,因为print函数使用它来转换打印值。 This question解释了strrepr之间的区别,它们分别调用对象的__str___repr__方法。

编辑:如果您不打算使用Python集,则如何存储集合中包含的值?您必须使用某种容器类型,因此请尝试使用列表。例如,插入会变得稍微复杂一点,因为插入现有值应该(大概)没有效果。从任何迭代创建都相对容易。这可能会让您入门:

class MySet:
    "Partial implementation of a set-like class."
    def __init__(self, iterable):
        "Store the initial values."
        self.values = list(iterable)
    def __len__(self):
        "Return number of values."
        return len(self.values)
    def __str__(self):
        "Return a string representation."
        return self.__repr__()
    def __repr__(self):
        return f'MySet({", ".join(repr(v) for v in self.values)})'

s = MySet(x*x for x in range(5))
print(s)

__repr__通过其print方法要求s的字符串表示形式时,将调用该__str__方法。您可以在其他方法中玩得开心。您将看到的输出是

MySet(0, 1, 4, 9, 16)