signalslot 0.0.1.

signalslot 0.0.1.

Enkel Signal / Slot implementering.

signalslot: enkel Signal / Slot implementering for Python.

Denne pakken gir en enkel og dum implementering av Signal / Slot-monsteret for Python. Wikipedia har en fin introduksjon:

Signaler og spor er en sprakkonstruksjon introdusert i Qt for kommunikasjon mellom objekter [1], noe som gjor det enkelt a implementere Observer-monsteret mens man unngar boilerplate-kode.

Hvorfor signalerer?

Signal / Slot er et monster som tillater los kopling av ulike komponenter i en programvare uten a introdusere boilerplate kode. Los kobling av komponenter muliggjor bedre modularitet i programvarekode som har den fine bivirkningen ved a gjore det lettere a teste fordi mindre avhengigheter betyr mindre mocking og ape patching.

Signal / Slot er et mye brukt monster, mange rammer har det innebygd, inkludert Django, Qt og sannsynligvis mange andre. Hvis du har et frittstaende prosjekt, vil du sannsynligvis ikke legge til en stor avhengighet som PyQt eller Django bare for et Signal / Slot-rammeverk. Det finnes et par frittstaende biblioteker som gir mulighet til a oppna et lignende resultat, som kretser eller PyPubSub, som har mange funksjoner enn signaler, slik som meldinger over nettverket, og er ganske komplisert og har rare (ikke-PyPi-vertskap) avhengigheter og er ikke PEP8-kompatibel …

signalslot har kallet for a v re en lett og enkel implementering av det velkjente Signal / Slot designmonsteret som leveres som en klassisk Python-pakke.

Installer siste stabile versjonen:

Installer utviklingsversjon:

Tett kobling.

Vurder en slik kode i your_client.py:

Problemet med den koden er at den knytter din_client med your_service og your_plugin, noe som gjor det vanskeligere a teste og vedlikeholde.

En forbedring ville v re a oppna det samme mens komponentene holdes lost koblet.

Observer monster.

Du kan implementere et Observer-monster i YourClient ved a legge til boilerplate-kode:

Denne implementeringen er litt dum, det kontrollerer ikke observatorers kompatibilitet for eksempel, det er ogsa tilleggskoden du ma teste.

Og dette ville fungere hvis du har kontroll over instanciering av YourClient, dvs.

Hvis YourClient brukes av et rammeverk med IoC (Inversion of Control), er det mye vanskeligere. Eksempel:

Som du kan se i eksempelet ovenfor, er det mye vanskeligere a fa hendene dine pa YourClient-forekomsten og ringe register_observer.

Bruke signalslot.

Vurder en slik signaldefinisjon i your_client / signals.py.

Du kan da koble spor til dette signalet i hver lost koblet modul. your_service / slots.py og your_plugin / slots.py ville inneholde noe som:

Deretter vil your_service.something_happens og your_plugin.something_happens bli kalt hver gang something_happens-signalet blir utstilt, dvs.

Alt du trenger a gjore er a importere your_client og your_plugin et sted for YourClient for a sikre at koble () samtalene blir utfort, dvs.



Hilsen! Vil du spille i det mest heldige kasinoet? Vi fant det for deg. Klikk her nå!