[Python] Design By Contract in Python

Kbyte kbyte a snowpenguin.org
Mar 9 Dic 2014 13:06:36 CET


>
> E mi chiedevo quindi se ci fossero dei "tool in Python che ne
> facilitano l'implementazione e l'uso corrente.
>

Anche io sono un amante del design by contract, però sinceramente ho sempre
avuto molte difficoltà a implementarlo in Python senza il costo di un
eccessivo overhead.

particolarmente aggiornato, e c'è Zope Interface:
> https://pypi.python.org/pypi/zope.interface/3.8.0


Diciamo che la mancanza di vere interfacce in Python può rendere
difficoltoso sia il design by contract sia l'utilizzo dei design pattern,
perché purtroppo può mandare in errore il programmatore maldestro,
soprattutto per l'assenza di controlli durante lo sviluppo (le ABC aiutano,
ma ti accorgi dell'errore solo quando instanzi la classe).


> Volevo quindi chiedervi se e come approcciate il design by contract in
> python: con semplici docstring, come prevede PEP 316
> (https://www.python.org/dev/peps/pep-0316/), oppure con tool (e quali)
> più strutturati?
>

Io non ho trovato nulla di soddisfacente, soprattutto nulla di trasparente.

Ecco questo è il vero problema dell'implementazione del dbc. In teoria i
controlli devono essere attivati solo al momento dello sviluppo/test del
software per essere disabilitati nel codice in produzione. Per questo in
Java e altri linguaggi i controlli del dbc si fanno con gli assert.

In python non mi risulta esista nulla del genere, quindi usare il dbc
potrebbe rendere incasinato il codice, dovendo mettere if e valori che
indicano se abilitarlo o meno.

Però il discorso è interessante, se qualcuno ha avuto migliori esperienze
si faccia avanti! :P
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20141209/54c969e4/attachment.html>


Maggiori informazioni sulla lista Python