[Python-Dev] PEP 526 ready for review: Syntax for Variable and Attribute Annotations
Guido van Rossum
guido at python.org
Thu Sep 1 16:37:37 EDT 2016
More information about the Python-Dev mailing list
Thu Sep 1 16:37:37 EDT 2016
- Previous message (by thread): [Python-Dev] PEP 526 ready for review: Syntax for Variable and Attribute Annotations
- Next message (by thread): [Python-Dev] PEP 526 ready for review: Syntax for Variable and Attribute Annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Sep 1, 2016 at 9:30 AM, Ivan Levkivskyi <levkivskyi at gmail.com> wrote: > On 1 September 2016 at 18:21, Steven D'Aprano <steve at pearwood.info> wrote: [...] >> Unless I've missed something, there's no way to pre-declare an instance >> attribute without specifying a type. (Even if that type is Any.) So how >> about we allow None as a type-hint on its own: >> >> NAME: None >> >> as equivalent to a declaration *without* a hint. The reader, and the >> type-checker, can see that there's an instance attribute called NAME, >> but in the absense of an actual hint, the type will have to be inferred, >> just as if it wasn't declared at all. > There is a convention for function annotations in PEP 484 that a missing > annotation is equivalent to Any, so that I like your first option more. But Steven wasn't proposing it to mean Any, he was proposing it to mean "type checker should infer". Where I presume the inference should be done based on the assignment in __init__ only. I'm not sure if this needs special syntax (a type checker might behave the same way without this, so we could just use a comment) but even if we did decide we wanted to support NAME: None for this case, we don't have to change Python, since this already conforms to the syntax in PEP 526 (the type is None). We'd still have to update the PEP to tell the authors of type checkers about this special feature, since otherwise it would mean "NAME has type NoneType" (remember that PEP 484 defines None as a shortcut for NoneType == type(None)). But that's not a very useful type for a variable... But I'm not in a hurry for that -- I'm only hoping to get the basic syntax accepted by Python 3.6 beta 1 so that we can start using this in 5 years from now rather than 7 years from now. -- --Guido van Rossum (python.org/~guido)
- Previous message (by thread): [Python-Dev] PEP 526 ready for review: Syntax for Variable and Attribute Annotations
- Next message (by thread): [Python-Dev] PEP 526 ready for review: Syntax for Variable and Attribute Annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list