Bools and explicitness [was Re: PyWart: The problem with "print"]
Robert Kern
robert.kern at gmail.com
Thu Jun 6 11:35:17 EDT 2013
On 2013-06-06 10:45, Chris Angelico wrote:
> For the "accept any object that has a next() method" sorts of rules, I
> don't know of any really viable system that does that usefully. The
> concept of implementing interfaces in Java comes close, but the class
> author has to declare that it's implementing some named interface. In
> theory there could be something that deduces the validity from the
> given structure, but I'm not aware of any language that does this. But
> it would let you do stuff like this (prototyped in Python):
>
> class Integers:
> def __init__(self): self.value=0
> def next(self):
> self.value+=1
> return self.value
>
> interface Iterable:
> next(self)
>
> def grab_three_values(Iterable iter):
> return iter.next(),iter.next(),iter.next()
>
> With a language that checks these sorts of things at compile time,
> it's not a big deal to test. With something fully dynamic like Python,
> it's probably not worth the effort. But maybe checks like this could
> be useful to something like Coverity.
As Serhiy notes, Go does this, almost exactly as you wrote it (modulo syntax).
http://golang.org/doc/effective_go.html#interfaces_and_types
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list