collections.namedtuple est utilisé pour construire des tuples avec des noms de champs. Le type correspondant est typing.NamedTuple (peut être utilisé comme superclasse).
Definition de l'objet NamedTuple:
Collections.NamedTuple (typename, field_ames, verbose = false, rename = false, defaults = non, module = non field_names : est une séquence de champs (par exemple, [‘x’, ‘y’]) ;
rename : lorsqu'ils sont vrais, les noms de champs non valides (par exemple, noms ou mots-clés en double) seront automatiquement remplacés par le nom de position (par exemple, _1) ;
defaults : la valeur par défaut du champ s'il s'agit d'un objet itérable, elle correspond à la valeur par défaut du champ dans field_names à son tour ; à partir d'un objet itérable (Iterable) Tuple nommé :
from collections import namedtuple Color = namedtuple("Color", "r g b alpha") def convert_to_color(desc: str, alpha: float = 0.0): if desc == "green": return Color(r=50, g=205, b=50, alpha=alpha) elif desc == "blue": return Color(r=50, g=0, b=255, alpha=alpha) else: return Color(r=50, g=0, b=0, alpha=alpha)
Modification de tuple nommé : La valeur à l'intérieur ne peut pas être modifiée directement Vous pouvez en construire une nouvelle via _replace :
c = Color._make([10, 20, 30, 0.1]) nc = Color._make((10, 20, 30, 0.1)) print("r:", c.r)
c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5} nc = c._replace(r=100)
Tuple nommé Convertir en dictionnaire (via la méthode _asdict) :
c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5} nc = Color(**c)
c = Color(r=50, g=0, b=0, alpha=0.5) d = c._asdict()
Properties
Properties _fields Un tuple contenant tous les champs : tels que ('r', 'g', ' b', 'alpha');
l'attribut __annotations__ contient un dictionnaire de champs et de types correspondants : tels que {'r' :
Trier
c = Color(r=50, g=0, b=0, alpha=0.5) t = tuple(c)
Comparaison avec le dictionnaire
Le dictionnaire est mutable ; , et n'importe quel nombre peut être ajouté selon les besoins. Nouvelles clés pour
Semblable à dict, les valeurs du tuple nommé peuvent être attribuées à des variables individuelles et utilisées selon les besoins. Cependant :
Classe de données
modification de la classe de données
peut facilement ajouter un document
peut être défini Sélectionnez un champ ;
from operator import attrgetter colors = [ Color(r=50, g=205, b=50, alpha=0.1), Color(r=50, g=205, b=50, alpha=0.5), Color(r=50, g=0, b=0, alpha=0.3) ] out = sorted(colors, key=attrgetter("alpha")) print(out)
from dataclasses import dataclass # frozen设为true后,字段内容将不允许修改(与namedtuple完全类似) # 否则可修改字段;并可任意添加字段(如,c.n=1); @dataclass(frozen=True) class DColor: """A regular class that represents a color.""" r: float g: float b: float alpha: float = 0.0 # c = DColor(r=10, g=20, b=30) c = DColor(10, 20, 30)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!