A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-dev/2004-April/044103.html below:

Python-Dev Digest, Vol 9, Issue 17)

[Python-Dev] Validators (was Re: Python-Dev Digest, Vol 9, Issue 17)Isaac ishnigarrab at earthlink.net
Mon Apr 5 21:30:32 EDT 2004
Guido:

>Please note that you seem to be using the syntax ``type: variable''.
>We've settled on using ``variable: type'' instead.  (How to express
>types is quite a different story...)
>

I haven't been following the thread on the subject much at all, I've 
just heard some rumbling about introducing static typing into python, 
and frankly I'm a bit wary about the whole thing. I was just thinking 
that in keeping with python's dynamic nature that something more like a 
generalized way of validating the _nature_ of something as opposed to 
it's underlying *type* would be more appropriate. It's just that it 
rings more pythonic to me (not that I have in any way graduated to the 
rank of Pythonist to make such judgments). As for the order of things, 
it's really not that important, "name: validator" would be just as 
useful. The only problem would be that

    def func(name: int): pass

works in terms of type checking, as in

    def func(name):
        if not isinstance(name, int):
            raise TypeError

where as translating it as a validator:

    def func(name):
        int(name)

doesn't make as much sense, int would have to be overloaded or something 
like is_int would have to be implemented.

But the advantages of validators would be numerous, IMO:

 * custom validators (equivalent to custom 'types' like in_range, or 
iterable)
 * still allows for the same functionality as typing systems while 
retaining dynamic capabilities.
 * possibly inline conversions (interface mutators, adaptors, I wonder 
if twisted might like something like this).

i.e.:

    def add(a: int, b: int): return a+b

    add('45', 5) => 50

if it were established that validators raise exceptions if the input is 
invalid, and return the value (possibly modified) if valid. Similar to 
implicit upcasting, i.e.:

    class MyInt(int):
       def __init__(self, i):
          self.i = i
       def add(self, other):
          self.i += other.i
          return self

    def add(a: MyInt, b: MyInt):
       return a.add(b)

    add(4, 4) => MyInt(8)

Again, I'm mostly just thinking aloud, hoping to be productive.

Isaac


More information about the Python-Dev mailing list

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