Considérons le morceau de code suivant:
from collections import namedtuple
point = namedtuple("Point", ("x:int", "y:int"))
Le code ci-dessus n’est qu’un moyen de démontrer ce que j’essaie de réaliser. Je voudrais faire namedtuple
avec des conseils de type.
Savez-vous de manière élégante comment atteindre le résultat escompté?
La syntaxe préférée pour un type nommé Tuple depuis 3.6 est
from typing import NamedTuple
class Point(NamedTuple):
x: int
y: int = 1 # Set default value
Point(3) # -> Point(x=3, y=1)
Éditer En commençant Python 3.7, envisagez d'utiliser dataclasses
(votre = IDE peut ne pas encore les prendre en charge pour la vérification de type statique):
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int = 1 # Set default value
Point(3) # -> Point(x=3, y=1)
Vous pouvez utiliser typing.NamedTuple
De la docs
Version typée de
namedtuple
.
>>> import typing
>>> Point = typing.NamedTuple("Point", [('x', int), ('y', int)])
Ceci est présent uniquement dans Python 3.5 et versions ultérieures