Kezdőoldal » Számítástechnika » Programozás » Pythonban hogy lehet a legeleg...

Pythonban hogy lehet a legelegánsabban biztosítani, hogy egy lista tartalma mindig megfeleljen egy bizonyos feltételnek?

Figyelt kérdés

A konkrét szitu nyilván nem ez, de példának megteszi, hogy pl csak "xyz"-vel kezdődő stringek lehessenek benne, és abból is legfeljebb 5 darab.

Bármikor, amikor változik a lista (append, extend, setitem, stb) vagy egy új példányt ad magából (add vagy szorzás operátor) le kéne futnia egy ilyen assert len(self)<=5 and all(x.startswith("xyz") for x in self) jellegű dolognak, hogy rögtön hibát dobjon, ha sérülnek a feltételek.

Az egyetlen ötletem, hogy a SpecialList(list) class-nak minden metódusába egyesével beszurkálom az ellenőrzésemet, de hátha van valami dekorátoros szebb/kész megoldás erre, pl: MyList = ConstrainedList(my_checker_function) és MyList(["xyz-maci", "xyz-laci"])



2022. dec. 9. 09:28
 1/4 anonim ***** válasza:

[link]

Ilyesmi?

2022. dec. 9. 10:05
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

Ilyesmi, csak lehetőleg anélkül hogy az összes létező list methodra külön-külön meg kelljen csinálni. Közben találtam valamit amivel talán kevésbé fájdalmas: [link]

Ezt gondolom úgy kéne módosítani, hogy lenne egy callback a helyben módosító metódusoknak és egy másik callback az új listát produkáló metódusoknak. Az előbbieknél csak le kell futtatni az ellenőrzést a végén, a másiknál meg a visszaadott listát át kell tolni a konstruktoron, amiben ott van az ellenőrzés.

2022. dec. 9. 10:24
 3/4 A kérdező kommentje:
Végül így csináltam, felrakom ha valakit érdekel: [link]
2022. dec. 9. 11:49
 4/4 A kérdező kommentje:
Elvileg generikus, tehát a self.check()-et olyan metódusok után is lefuttatja, amelyeknél a konkrét példámon felesleges lenne (pop, slice, reverse...). De ha az elemek sorrendje, vagy egyéb tulajdonságok is számítanának, akkor az is működne. Minden listát módosító vagy listát visszaadó metódusra be van regisztrálva az ellenőrzés.
2022. dec. 9. 11:54

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!