我想创建一个类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'''
答案 0 :(得分:0)
正如丹尼尔·罗斯曼(Daniel Roseman)在评论中指出的那样,Python的内置set
类型已经可以满足您的所有需求。
从技术上讲,您的类应该实现__repr__
方法,因为print
函数使用它来转换打印值。 This question解释了str
和repr
之间的区别,它们分别调用对象的__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)