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'
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'])