collections.namedtuple digunakan untuk membina tupel dengan nama medan. Jenis yang sepadan ialah menaip.NamedTuple (boleh digunakan sebagai superclass).
Takrif objek bernamatuple:
collections.namedtuple(typename, field_names, verbose=False, rename=False, defaults=None, module=None) :
nama taip: nama tuple
nama_medan: ialah jujukan medan (cth., [‘x’, ‘y’]) ;
nama semula: Apabila benar, jika nama medan tidak sah (contohnya, nama pendua atau kata kunci digunakan), ia akan digantikan secara automatik dengan nama kedudukan (contohnya, _1) ;
lalai: Nilai lalai medan itu, ia sepadan dengan nilai lalai medan dalam
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)
Daripada objek boleh lelar (Iterable ) Bina tuple bernama:
c = Color._make([10, 20, 30, 0.1]) nc = Color._make((10, 20, 30, 0.1)) print("r:", c.r)
Pengubahsuaian tuple bernama: Nilai di dalamnya tidak boleh diubah suai secara langsung, dan nilai baharu boleh dibina melalui _replace:
c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5} nc = c._replace(r=100)
Tukar kamus kepada tuple bernama:
c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5} nc = Color(**c)
Tukar tuple bernama kepada kamus (melalui kaedah _asdict):
c = Color(r=50, g=0, b=0, alpha=0.5) d = c._asdict()
Tukar tuple bernama kepada tuple:
c = Color(r=50, g=0, b=0, alpha=0.5) t = tuple(c)
Attribute_fields mengandungi tuple semua medan: seperti ('r', 'g', 'b', 'alpha'); >
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)
Atas ialah kandungan terperinci Cara menggunakan python bernama tupel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!