[Python-Dev] Is static typing still optional? (original) (raw)

David Mertz mertz at gnosis.cx
Sun Dec 17 11:54:04 EST 2017


On Sun, Dec 17, 2017 at 8:22 AM, Guido van Rossum <guido at python.org> wrote:

On Sun, Dec 17, 2017 at 2:11 AM, Julien Salort <listes at salort.eu> wrote:

Naive question from a lurker: does it mean that it works also if one annotates with something that is not a type, e.g. a comment,

@dataclass class C: a: "This represents the amplitude" = 0.0 b: "This is an offset" = 0.0 I would personally not use the notation for this, but it is legal code. However static type checkers like mypy won't be happy with this.

Mypy definitely won't like that use of annotation, but documentation systems might. For example, in a hover tooltip in an IDE/editor, it's probably more helpful to see the descriptive message than "int" or "float" for the attribute.

What about data that isn't built-in scalars? Does this look right to people (and will mypy be happy with it)?

@dataclass class C: a:numpy.ndarray = numpy.random.random((3,3)) b:MyCustomClass = MyCustomClass("foo", 37.2, 1+2j)

I don't think those look terrible, but I think this looks better:

@dataclass class C: a:Infer = np.random.random((3,3)) b:Infer = MyCustomClass("foo", 37.2, 1+2j)

Where the name 'Infer' (or some other spelling) was a name defined in the dataclasses module. In this case, I don't want to use typing.Any since I really do want "the type of thing the default value has."

-- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20171217/a26c1cf4/attachment-0001.html>



More information about the Python-Dev mailing list