[Python-Dev] Is static typing still optional?

MRAB python at mrabarnett.plus.com
Thu Dec 21 18:10:35 EST 2017


On 2017-12-21 22:45, Chris Barker wrote:
> On Thu, Dec 21, 2017 at 11:55 AM, Terry Reedy <tjreedy at udel.edu 
> <mailto:tjreedy at udel.edu>> wrote:
> 
>     I think the understanding problem with this feature arises from two
>     factors: using annotations to define possibly un-initialized slots
>     is non-obvious; a new use of annotations for something other than
>     static typing is a bit of a reversal of the recent pronouncement
>     'annotations should only be used for static typing'. 
> 
> 
> you know, that may be where part of my confusion came from -- all the 
> talk lately has been about "type hints" and "type annotations" -- the 
> idea of "arbitrary annotations" has been lost.
> 
>     Therefore, getting the permanent doc 'right' is important.
> 
> 
> yup.
> 
>     @dataclass
>     class C:
>          x
>          y = 0
> 
>     I think the doc should explicitly say that uninitialized fields
>     require annotation with something (anything, not necessarily a type)
>     simply to avoid NameError during class creation. 
> 
> 
> would this be possible?
> 
> @dataclass
> class C:
>      x:
>      y: = 0
> 
> That is -- the colon indicates an annotation, but in this case, it's a 
> "nothing" annotation.
> 
> 
"..." or "pass", perhaps?

@dataclass
class C:
      x: ...
      y: ... = 0

or:

@dataclass
class C:
      x: pass
      y: pass = 0

> It's a syntax error now, but would it be possible to change that? Or 
> would the parsing be ambiguous? particularly in other contexts.
> 
> of course, then we'd need something to store in as a "nothing" 
> annotation -- empty string? None? (but None might mean something) create 
> yet anther type for "nothing_annotation"
> 
> Hmm, I may have talked myself out of it....
> 


More information about the Python-Dev mailing list