tuple example python python-3.x typename namedtuple

python - named tuple example



Relevancia de typename en namedtuple (2)

''whatsmypurpose'' le da a la nueva subclase el nombre de su tipo. De la documentación:

collections.namedtuple ( nombre de tipo , field_names, verbose = False, rename = False)
Devuelve una nueva subclase de tupla llamada typename .

Aquí hay un ejemplo:

>>> from collections import namedtuple >>> Foo = namedtuple(''Foo'', [''a'', ''b'']) >>> type(Foo) <class ''type''> >>> a = Foo(a = 1, b = 2) >>> a Foo(a=1, b=2) >>> Foo = namedtuple(''whatsmypurpose'', [''a'', ''b'']) >>> a = Foo(a = 1, b = 2) >>> a whatsmypurpose(a=1, b=2) >>>

Establezca el parámetro verbose en True y puede whatsmypurpose la definición completa de la clase whatsmypurpose .

>>> Foo = namedtuple(''whatsmypurpose'', [''a'', ''b''], verbose=True) from builtins import property as _property, tuple as _tuple from operator import itemgetter as _itemgetter from collections import OrderedDict class whatsmypurpose(tuple): ''whatsmypurpose(a, b)'' __slots__ = () _fields = (''a'', ''b'') def __new__(_cls, a, b): ''Create new instance of whatsmypurpose(a, b)'' return _tuple.__new__(_cls, (a, b)) @classmethod def _make(cls, iterable, new=tuple.__new__, len=len): ''Make a new whatsmypurpose object from a sequence or iterable'' result = new(cls, iterable) if len(result) != 2: raise TypeError(''Expected 2 arguments, got %d'' % len(result)) return result def _replace(_self, **kwds): ''Return a new whatsmypurpose object replacing specified fields with new values'' result = _self._make(map(kwds.pop, (''a'', ''b''), _self)) if kwds: raise ValueError(''Got unexpected field names: %r'' % list(kwds)) return result def __repr__(self): ''Return a nicely formatted representation string'' return self.__class__.__name__ + ''(a=%r, b=%r)'' % self def _asdict(self): ''Return a new OrderedDict which maps field names to their values.'' return OrderedDict(zip(self._fields, self)) def __getnewargs__(self): ''Return self as a plain tuple. Used by copy and pickle.'' return tuple(self) a = _property(_itemgetter(0), doc=''Alias for field number 0'') b = _property(_itemgetter(1), doc=''Alias for field number 1'')

from collections import namedtuple Point=namedtupe(''whatsmypurpose'',[''x'',''y'']) p=Point(11,22) print(p)

Salida:

whatsmypurpose(x=11,y=22)

¿Cuál es la relevancia / uso de ''whatsmypurpose'' ?


namedtuple() es una función de fábrica para las subclases de tuple . Aquí, ''whatsmypurpose'' es el nombre de tipo. Cuando creas una tupla con nombre, una clase con este nombre ( whatsmypurpose ) se crea internamente.

Puedes notar esto usando el argumento detallado como:

Point=namedtuple(''whatsmypurpose'',[''x'',''y''], verbose=True)

También puedes probar type(p) para verificar esto.