[Python-Dev] Validators (was Re: Python-Dev Digest, Vol 9, Issue 17) (original) (raw)

Isaac ishnigarrab at earthlink.net
Mon Apr 5 22:29:58 EDT 2004


Josiah Carlson wrote:

Isaac,

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, Python is not going to have static typing as a part of the base language, so worry not. 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 How do you propose to get at the "nature" of what an object is? Currently in Python, we really only have types to determine what an object is. With that, we /can/ do per-call checks on the types of the input, heck, if we're smart, we can even do polymorphism. Such a solution is doable in current Python with various approaches. Making a decorator that would handle type checking and polymorphism has been provided here already, or we can go a class-based route to do the same thing, though not nearly as neat. Still, what do you mean by the "nature" of what something is? - Josiah Nature was a horrible word for me to use; what I was trying to convey was that there are so many mays to analyze an object besides just the type (which I assume directly refers to the return value of type(object) as opposed to some loose concept of 'type' as in style) of the object. Like some of the examples I gave earlier, in_range, i.e.:

def in_range(*args):
   r = range(*args)
   def partial(n):
      if n in r:
         return n
      else:
         raise TypeError
   return partial

def func(a: in_range(10)): pass

which is very different from pure type checking which I assume would be:

def func(a: int): pass

which simply translates to an 'isinstance(a, int)' call, where 'a' is a variable and 'int' is a type object.



More information about the Python-Dev mailing list