Design by Contract for Python
The idea of design by contract (DBC), realized in the statically typed object-oriented programming language
Eiffel, can be viewed as a systematic approach to specifying and implementing object-oriented software systems.
We believe that a statically typed programming language is not suitable in the analysis and design phase of a
prototyping-oriented software life cycle. For this purpose, dynamically typed interpreted programming
languages are better suited. Unfortunately, dynamically typed programming languages usually do not support
the concept of DBC. Therefore we integrated DBC into the programming language Python by using a metapro-
gramming approach, i.e., without changing the language or the run-time system. We adopted the DBC concept
by adding mechanisms for dynamic type checking for method parameters and instance variables. The proposed
combination of a more formal approach with a slim programming language provides a good basis for elicitation
and documentation tasks in the analysis and design phase, especially in cases of a prototyping-oriented software
development approach. Although the approach presented provides basic tool support for the analysis and design
phase, further tool support, especially for browsing assertions, is desirable.
R. Plösch, Design by Contract for Python, IEEE Proceedings of the Joint Asia Pacific Software Engineering Conference (APSEC97/ICSC97), Hongkong, December 2-5, 1997.