[Python-Dev] Re: def fn (args) [dec,dec]:

Michael Walter michael.walter at gmail.com
Wed Aug 11 04:14:30 CEST 2004


Let's see how we could reduce that in a (hypothetical)
optionally-typed Python, supposed that we use meaningful
variable+classnames (thus usually avoiding the need for parameter
descriptions):

@precondition(some_validator, lastarg)
@postcondition(rv_validator)
@classmethod
def someMethod(klass, anarg : aClass, otharg : othClass, lastarg :
lastClass) -> rClass:
  # foo

By moving preconditions into the type (which is often possible -- in
the other case we often don't want to expose the precondition
publically, anyway, at least in my limited experience), we can reduce
this some more:

@postcondition(rv_validator)
@classmethod
def someMethod(klass, anarg : aClass, otharg : othClass, lastarg :
lastClassSubType) -> rClass:
  # foo

The only remaining question would be whether the postcondition should
be revealed in the method's "interface" (which I consider the
decorations to be part of) - I would also think that usually this
isn't the case (question: would you put them into the code in the form
of asserts instead? or use the old someMethod =
postconditioned(someMethod, rv_validator) syntax?).

I'm pretty sure I've made too many assumptions for too many people
(and I don't really see the point of my post yet), but oh well :)

Cheers,
Michael

On Wed, 11 Aug 2004 13:57:03 +1200, Greg Ewing
<greg at cosc.canterbury.ac.nz> wrote:
> > > Perhaps someone can post some real-life use cases written with this
> > > syntax,
> >
> > well, how about this:
> >
> >     def someMethod(klass, anarg, otharg, lastarg):
> >         """
> >             Summary.
> >
> >             Long description that explains the details about someMethod.
> >             Aliquam venenatis orci in risus. Nunc ornare aliquam
> 
> I was hoping for some real live code, e.g. an excerpt from
> PyObjC. This is still a made-up example.
> 
> >    @param(anarg, aClass, 'desc of anarg')
> >    @param(otharg, othClass, 'desc of otharg')
> >    @param(lastarg, lastClass, "longer desc of lastarg because it's special")
> >    @return(rClass, 'return value description')
> >    @precondition(some_validator, lastarg)
> >    @postcondition(rv_validator)
> >    @classmethod
> >    def someMethod(klass, anarg, otharg, lastarg):
> >        """
> >            Summary.
> 
> And this looks awful - the method name is almost completely
> lost under the deluge of preceding junk!
> 
> 
> 
> Greg Ewing, Computer Science Dept, +--------------------------------------+
> University of Canterbury,          | A citizen of NewZealandCorp, a       |
> Christchurch, New Zealand          | wholly-owned subsidiary of USA Inc.  |
> greg at cosc.canterbury.ac.nz         +--------------------------------------+
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/michael.walter%40gmail.com
>


More information about the Python-Dev mailing list