bin gestern auf dieses recipe gestoßen und verstehe innerhalb der `__init__` die Zuweisung
Code: Alles auswählen
...
self |= []
Konnte auch in der Python Dokumentation nichts finden (was nicht unbedingt etwas zu bedeuten hat... ).
mutetella
Code: Alles auswählen
...
self |= []
Code: Alles auswählen
In [1]: set([0,3,4]) | set([1,2])
Out[1]: set([0, 1, 2, 3, 4])
Code: Alles auswählen
>>> s = set()
>>> s |= []
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |=: 'set' and 'list'
Ernsthaft? Ich hatte Mengenoperationen in der 11. oder 12. Klasse. Also dir hat man in der 4. Klasse beigebracht, was Vereinigung, Schnitt etc. bedeuten und wie man diese Operationen anwendet?BlackJack hat geschrieben:Was „oder” in der Mengenlehre bedeutet, habe ich mal vor laaanger Zeit in der Grundschule gelernt.
Aber gerade das __ior__ von Set erwartet rechts ein weiteres Set, die Prüfung findet aber für die ABC nicht mehr statt, sondern es wird für alle Elemente die abstrakte add-Methode bemüht. Offensichtlich ähnlich diesem Vorgehen:Inherited Set methods and clear, pop, remove, __ior__, __iand__, __ixor__, and __isub__
Code: Alles auswählen
>>> class MySet(set):
... def __init__(self, iterable):
... if iterable is not None:
... self |= iterable
... def __ior__(self, other):
... for el in other:
... self.add(el)
...
>>> ms = MySet('abcdeba')
>>> ms
MySet(['a', 'c', 'b', 'e', 'd'])