Een groep personen wordt gegroepeerd in een object van de klasse Bubbel. Een beperkt aantal knuffelcontacten kunnen aan de bubbel toegevoegd worden.
Programmeer in de klasse Bubbel :
__str__() die de lijst van personen in de groep als resultaat teruggeeft. Hierbij wordt de lijst omgeven door vierkante haakjes, en word personen (strings) gescheiden door komma's (geen spaties!).__repr__() methode, en zorg tevens dat de operator == het correcte gedrag vertoont. Hierbij zijn twee bubbels gelijk als de groep van personen identiek is (volgorde speelt geen rol). bubbel(index) met index en bubbel een object van de klasse Bubbel een geheel getal het volgende gedrag vertoont:
index een geldig rangnummer van de groepslijst, zoals in de constructor meegegeven, voorstelt, dan is het resultaat de persoon met dit rangnummer (een string dus)'X'bubbel.knuffel (met bubbel een object van de klasse Bubbel) de lijst van knuffelcontacten als resultaat oplevert, in de volgorde waarin ze toegevoegd werden aan de groep (zie hieronder) bubbel += persoon met bubbel een object van de klasse Bubbel en persoon een string, de persoon toevoegt aan de knuffelcontacten van de groep. De opdrachte heeft GEEN effect indien 1 (of meer) van onderstaande voorwaarde vervult is (zijn):
bubbel -= persoon (notaties zoals hierboven) resulteert in het weghalen van de persoon uit de groep van knuffelcontacten. Indien de persoon NIET tot de knuffelcontacten behoorde, heeft de opdracht geen effect.bubbel1 * bubbel2 de verzameling van personen teruggeeft die gemeenschappelijk zijn aan bubbel1 en bubbel2, hetzij als groeplid, hetzij als knuffelcontact (zowel bubbel1 en bubbel2 zijn objecten van de klasse Bubbel)
b1 = Bubbel(['Greet', 'Mo', 'Nasser'], 3)
print(b1) #[Greet,Mo,Nasser]
print(eval(repr(b1)) == b1) #True
print(b1(1)) #Mo
print(b1(5)) #'X'
for contact in ['Jan', 'Leen', 'Mo', 'Leen', 'Jan', 'Mo']:
b1 += contact
print(b1.knuffel) #[Jan, Leen]
for contact in ['Mo', 'Jan', 'Jan', 'Jan', 'Mo', 'Greet']:
b1 -= contact
print(b1.knuffel) #[Leen]
for contact in ['Jan', 'Cedric', 'Mo', 'Izmir', 'Izmir', 'Jan', 'Mo']:
b1 += contact
print(b1.knuffel) #[Leen, Jan, Cedric]
b2 = Bubbel(['Greet', 'Dorine', 'Cedric', 'Mo', 'Leen'], 3)
for contact in ['Leen', 'Nasser']:
b2 += contact
print(b1 * b2) #{'Greet', 'Mo', 'Cedric', 'Leen', 'Nasser'}