On Sunday, June 1, 2003, at 12:17 PM, Paul Moore wrote: > Note: I'm *not* a fan of Eiffel-style formal pre and post conditions. > I probably wouldn't use them, personally. But as I could end up > dealing with others' code which uses such a feature if it was added, I > do have an interest. Also, I haven't read the PEP yet (I'm offline > right now). > > But I disagree fairly strongly with the idea of having pre/post > conditions in docstrings. That is *not* what docstrings are for. > Docstrings are documentation, not arbitrary metadata. > > How about this as a proposal? Attach pre and post conditions to a > functions as function attributes. A silly example: > > > def f(): > pass > > def pre(): > assert True > f.pre = pre > > def post(): > assert True > f.post = post > > This is a bit wordy, but entirely doable with Python as it stands and > the conditions are syntax checked at definition time, just like they > should be. If pre/post conditions turn out to be so useful that they > deserve a more concise syntax, *that's* the time to propose better > syntax. (One obvious possibility would be to allow more flexibility in > def statements, so that > > def f.post(): > whatever > > becomes possible.) Although I haven't played with it much, in the back of my mind, I think descriptors might be the right implementation technique for this. And the syntax that seems to keep coming up is something like: def f(x, y) [pre, post]: foo() For other reasons, I'm finding that I'd really like to see this syntax for function decorators embodied in its own PEP. -Barry
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4