diff --git a/reference/datamodel.po b/reference/datamodel.po index 222f46639c..f393d3ffeb 100644 --- a/reference/datamodel.po +++ b/reference/datamodel.po @@ -11,15 +11,16 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-03-19 11:16+0100\n" -"PO-Revision-Date: 2020-06-09 20:48-0500\n" -"Last-Translator: Carlos Joel Delgado Pizarro \n" +"PO-Revision-Date: 2021-03-19 22:57+0100\n" +"Last-Translator: Cristián Maureira-Fredes \n" "Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" +"X-Generator: Poedit 2.4.1\n" #: ../Doc/reference/datamodel.rst:6 msgid "Data model" @@ -295,6 +296,10 @@ msgid "" "currently evaluates as true, it will emit a :exc:`DeprecationWarning`. It " "will raise a :exc:`TypeError` in a future version of Python." msgstr "" +"La evaluación de ``NotImplemented`` en un contexto booleano está en desuso. " +"Si bien actualmente se evalúa como verdadero, lanzará un :exc:" +"`DeprecationWarning`. Lanzará un :exc:`TypeError` en una versión futura de " +"Python." #: ../Doc/reference/datamodel.rst:179 msgid "Ellipsis" @@ -334,32 +339,40 @@ msgid "" "The string representations of the numeric classes, computed by :meth:" "`__repr__` and :meth:`__str__`, have the following properties:" msgstr "" +"Las representaciones de cadena de las clases numéricas, calculadas por :meth:" +"`__repr__` y :meth:`__str__`, tienen las siguientes propiedades:" #: ../Doc/reference/datamodel.rst:194 msgid "" "They are valid numeric literals which, when passed to their class " "constructor, produce an object having the value of the original numeric." msgstr "" +"Son literales numéricos válidos que, cuando se pasan a su constructor de " +"clase, producen un objeto que tiene el valor del numérico original." #: ../Doc/reference/datamodel.rst:198 msgid "The representation is in base 10, when possible." -msgstr "" +msgstr "La representación está en base 10, cuando sea posible." #: ../Doc/reference/datamodel.rst:200 msgid "" "Leading zeros, possibly excepting a single zero before a decimal point, are " "not shown." msgstr "" +"Los ceros iniciales, posiblemente excepto un solo cero antes de un punto " +"decimal, no se muestran." #: ../Doc/reference/datamodel.rst:203 msgid "" "Trailing zeros, possibly excepting a single zero after a decimal point, are " "not shown." msgstr "" +"Los ceros finales, posiblemente excepto un solo cero después de un punto " +"decimal, no se muestran." #: ../Doc/reference/datamodel.rst:206 msgid "A sign is shown only when the number is negative." -msgstr "" +msgstr "Solo se muestra un signo cuando el número es negativo." #: ../Doc/reference/datamodel.rst:208 msgid "" @@ -637,9 +650,10 @@ msgid "" "placing a comma-separated list of expressions in square brackets. (Note that " "there are no special cases needed to form lists of length 0 or 1.)" msgstr "" -"The items of a list are arbitrary Python objects. Lists are formed by " -"placing a comma-separated list of expressions in square brackets. (Note that " -"there are no special cases needed to form lists of length 0 or 1.)" +"Los elementos de una lista son objetos de Python arbitrarios. Las listas se " +"forman colocando una lista de expresiones separadas por comas entre " +"corchetes. (Tome en cuenta que no hay casos especiales necesarios para " +"formar listas de longitud 0 o 1.)" #: ../Doc/reference/datamodel.rst:378 msgid "Byte Arrays" @@ -838,16 +852,15 @@ msgid "User-defined functions" msgstr "Funciones definidas por el usuario" #: ../Doc/reference/datamodel.rst:482 -#, fuzzy msgid "" "A user-defined function object is created by a function definition (see " "section :ref:`function`). It should be called with an argument list " "containing the same number of items as the function's formal parameter list." msgstr "" -"Una objeto del tipo función, definida por el usuario, es creado por un " -"definición de función (vea la sección :ref:`function`). Debe llamarse con " -"una lista de argumentos que contenga el mismo número de elementos que la " -"lista de parámetros formales de la función." +"Un objeto función definido por el usuario, es creado por un definición de " +"función (vea la sección :ref:`function`). Debe llamarse con una lista de " +"argumentos que contenga el mismo número de elementos que la lista de " +"parámetros formales de la función." #: ../Doc/reference/datamodel.rst:487 msgid "Special attributes:" @@ -1041,7 +1054,6 @@ msgid "Instance methods" msgstr "Métodos de instancia" #: ../Doc/reference/datamodel.rst:584 -#, fuzzy msgid "" "An instance method object combines a class, a class instance and any " "callable object (normally a user-defined function)." @@ -1058,12 +1070,20 @@ msgid "" "`__module__` is the name of the module the method was defined in, or " "``None`` if unavailable." msgstr "" +"Atributos especiales de solo lectura: :attr:`__self__` es el objeto de " +"instancia de clase, :attr:`__func__` es el objeto de función; :attr:" +"`__doc__` es la documentación del método (al igual que ``__func__." +"__doc__``); :attr:`~definition.__name__` es el nombre del método (al igual " +"que ``__func__.__name__``); :attr:`__module__` es el nombre del módulo en el " +"que el método fue definido, o ``None`` si no se encuentra disponible." #: ../Doc/reference/datamodel.rst:600 msgid "" "Methods also support accessing (but not setting) the arbitrary function " "attributes on the underlying function object." msgstr "" +"Los métodos también admiten obtener (más no establecer) los atributos " +"arbitrarios de la función en el objeto de función subyacente." #: ../Doc/reference/datamodel.rst:603 msgid "" @@ -1071,6 +1091,10 @@ msgid "" "class (perhaps via an instance of that class), if that attribute is a user-" "defined function object or a class method object." msgstr "" +"Los objetos de métodos definidos por usuarios pueden ser creados al obtener " +"el atributo de una clase (probablemente a través de la instancia de dicha " +"clase), si tal atributo es el objeto de una función definida por el usuario " +"o el objeto del método de una clase." #: ../Doc/reference/datamodel.rst:607 msgid "" @@ -1079,6 +1103,11 @@ msgid "" "attribute is the instance, and the method object is said to be bound. The " "new method's :attr:`__func__` attribute is the original function object." msgstr "" +"Cuando un objeto de instancia de método es creado al obtener un objeto de " +"función definida por el usuario desde una clase a través de una de sus " +"instancias, su atributo :attr:`__self__` es la instancia, y el objeto de " +"método se dice que está enlazado. El nuevo atributo de método :attr:" +"`__func__` es el objeto de función original." #: ../Doc/reference/datamodel.rst:613 msgid "" @@ -1087,6 +1116,10 @@ msgid "" "itself, and its :attr:`__func__` attribute is the function object underlying " "the class method." msgstr "" +"Cuando un objeto de instancia de método es creado al obtener un objeto de " +"método de clase a partir de una clase o instancia, su atributo :attr:" +"`__self__` es la clase misma, y su atributo :attr:`__func__` es el objeto de " +"función subyacente al método de la clase." #: ../Doc/reference/datamodel.rst:618 msgid "" @@ -1096,6 +1129,12 @@ msgid "" "contains a definition for a function :meth:`f`, and ``x`` is an instance of :" "class:`C`, calling ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``." msgstr "" +"Cuando el objeto de la instancia de método es invocado, la función " +"subyacente (:attr:`__func__`) es llamada, insertando la instancia de clase (:" +"attr:`__self__`) delante de la lista de argumentos. Por ejemplo, cuando :" +"class:`C` es una clase que contiene la definición de una función :meth:`f`, " +"y ``x`` es una instancia de :class:`C`, invocar ``x.f(1)`` es equivalente a " +"invocar ``C.f(x, 1)``." #: ../Doc/reference/datamodel.rst:625 msgid "" @@ -1104,6 +1143,10 @@ msgid "" "itself, so that calling either ``x.f(1)`` or ``C.f(1)`` is equivalent to " "calling ``f(C,1)`` where ``f`` is the underlying function." msgstr "" +"Cuando el objeto de instancia de método es derivado del objeto del método de " +"clase, la “instancia de clase” almacenada en :attr:`__self__` en realidad " +"será la clase misma, de manera que invocar ya sea ``x.f(1)``o ``C.f(1)`` es " +"equivalente a invocar ``f(C,1)`` donde ``f`` es la función subyacente." #: ../Doc/reference/datamodel.rst:630 msgid "" @@ -1117,10 +1160,20 @@ msgid "" "class instance are not converted to bound methods; this *only* happens when " "the function is an attribute of the class." msgstr "" +"Tome en cuenta que la transformación de objeto de función a objeto de método " +"de instancia ocurre cada vez que el atributo es obtenido de la instancia. " +"En algunos casos, una optimización fructífera es asignar el atributo a una " +"variable local e invocarla. Note también que esta transformación únicamente " +"ocurre con funciones definidas por usuario; otros objetos invocables (y " +"todos los objetos no invocables) son obtenidos sin transformación. También " +"es importante mencionar que las funciones definidas por el usuario, que son " +"atributos de la instancia de una clase no son convertidos a métodos " +"enlazados; esto ocurre *únicamente* cuando la función es un atributo de la " +"clase." #: ../Doc/reference/datamodel.rst:654 msgid "Generator functions" -msgstr "" +msgstr "Funciones generadoras" #: ../Doc/reference/datamodel.rst:646 msgid "" @@ -1134,10 +1187,19 @@ msgid "" "raised and the iterator will have reached the end of the set of values to be " "returned." msgstr "" +"Una función o método que utiliza la declaración :keyword:`yield` (ver " +"sección :ref:`yield`) se llama :dfn:`generator function`. Dicha función, " +"cuando es invocada, siempre retorna un objeto iterador que puede ser " +"utilizado para ejecutar el cuerpo de la función: invocando el método " +"iterador :meth:`iterator.__next__` hará que la función se ejecute hasta " +"proporcionar un valor utilizando la declaración :keyword:`!yield`. Cuando " +"la función ejecuta una declaración :keyword:`return` o llega hasta el final, " +"una excepción :exc:`StopIteration` es lanzada y el iterador habrá llegado al " +"final del conjunto de valores a ser retornados." #: ../Doc/reference/datamodel.rst:664 msgid "Coroutine functions" -msgstr "" +msgstr "Funciones de corrutina" #: ../Doc/reference/datamodel.rst:660 msgid "" @@ -1147,10 +1209,15 @@ msgid "" "as :keyword:`async with` and :keyword:`async for` statements. See also the :" "ref:`coroutine-objects` section." msgstr "" +"Una función o método que es definido utilizando :keyword:`async def` se " +"llama :dfn:`coroutine function`. Dicha función, cuando es invocada, retorna " +"un objeto :term:`coroutine`. Éste puede contener expresiones :keyword:" +"`await`, así como declaraciones :keyword:`async with` y :keyword:`async " +"for`. Ver también la sección :ref:`coroutine-objects`." #: ../Doc/reference/datamodel.rst:683 msgid "Asynchronous generator functions" -msgstr "" +msgstr "Funciones generadoras asincrónicas" #: ../Doc/reference/datamodel.rst:671 msgid "" @@ -1160,6 +1227,11 @@ msgid "" "object which can be used in an :keyword:`async for` statement to execute the " "body of the function." msgstr "" +"Una función o método que es definido usando :keyword:`async def` y que " +"utiliza la declaración :keyword:`yield` se llama :dfn:`asynchronous " +"generator function`. Dicha función, al ser invocada, retorna un objeto " +"iterador asincrónico que puede ser utilizado en una declaración :keyword:" +"`async for` para ejecutar el cuerpo de la función." #: ../Doc/reference/datamodel.rst:677 msgid "" @@ -1170,10 +1242,16 @@ msgid "" "`StopAsyncIteration` exception is raised and the asynchronous iterator will " "have reached the end of the set of values to be yielded." msgstr "" +"Invocando el método del iterador asincrónico :meth:`aiterator.__anext__` " +"retornará un :term:`awaitable` que al ser esperado se ejecutará hasta " +"proporcionar un valor utilizando la expresión :keyword:`yield`. Cuando la " +"función ejecuta una declaración :keyword:`return` vacía o llega a su final, " +"una excepción :exc:`StopAsyncIteration` es lanzada y el iterador asincrónico " +"habrá llegado al final del conjunto de valores a ser producidos." #: ../Doc/reference/datamodel.rst:698 msgid "Built-in functions" -msgstr "" +msgstr "Funciones incorporadas" #: ../Doc/reference/datamodel.rst:691 msgid "" @@ -1186,10 +1264,20 @@ msgid "" "``None`` (but see the next item); :attr:`__module__` is the name of the " "module the function was defined in or ``None`` if unavailable." msgstr "" +"Un objeto de función incorporada es un envoltorio (wrapper) alrededor de una " +"función C. Ejemplos de funciones incorporadas son :func:`len` y :func:`math." +"sin` (:mod:`math` es un módulo estándar incorporado). El número y tipo de " +"argumentos son determinados por la función C. Atributos especiales de solo " +"lectura: :attr:`__doc__` es la cadena de documentación de la función, o " +"``None`` si no se encuentra disponible; :attr:`~definition.__name__` es el " +"nombre de la función; :attr:`__init__` es establecido como ``None`` (sin " +"embargo ver el siguiente elemento); :attr:`__module__` es el nombre del " +"módulo en el que la función fue definida o ``None`` si no se encuentra " +"disponible." #: ../Doc/reference/datamodel.rst:710 msgid "Built-in methods" -msgstr "" +msgstr "Métodos incorporados" #: ../Doc/reference/datamodel.rst:706 msgid "" @@ -1199,10 +1287,16 @@ msgid "" "*alist* is a list object. In this case, the special read-only attribute :" "attr:`__self__` is set to the object denoted by *alist*." msgstr "" +"Éste es realmente un disfraz distinto de una función incorporada, esta vez " +"teniendo un objeto que se pasa a la función C como un argumento extra " +"implícito. Un ejemplo de un método incorporado es ``alist.append()``, " +"asumiendo que *alist* es un objeto de lista. En este caso, el atributo " +"especial de solo lectura :attr:`__self__` es establecido al objeto indicado " +"por *alist*." #: ../Doc/reference/datamodel.rst:717 msgid "Classes" -msgstr "" +msgstr "Clases" #: ../Doc/reference/datamodel.rst:713 msgid "" @@ -1212,20 +1306,27 @@ msgid "" "`__new__` and, in the typical case, to :meth:`__init__` to initialize the " "new instance." msgstr "" +"Las clases son invocables. Estos objetos normalmente actúan como fábricas " +"de nuevas instancias de ellos mismos, pero las variaciones son posibles para " +"los tipos de clases que anulan :meth:`__new__`. Los argumentos de la " +"invocación son pasados a :meth:`__new__` y, en el caso típico, a :meth:" +"`__init__` para iniciar la nueva instancia." #: ../Doc/reference/datamodel.rst:722 msgid "Class Instances" -msgstr "" +msgstr "Instancias de clases" #: ../Doc/reference/datamodel.rst:720 msgid "" "Instances of arbitrary classes can be made callable by defining a :meth:" "`__call__` method in their class." msgstr "" +"Las instancias de clases arbitrarias se pueden hacer invocables definiendo " +"el método :meth:`__call__` en su clase." #: ../Doc/reference/datamodel.rst:772 msgid "Modules" -msgstr "" +msgstr "Módulos" #: ../Doc/reference/datamodel.rst:729 msgid "" @@ -1240,12 +1341,25 @@ msgid "" "not contain the code object used to initialize the module (since it isn't " "needed once the initialization is done)." msgstr "" +"Los módulos son una unidad básica organizacional en código Python, y son " +"creados por el :ref:`import system ` al ser invocados ya sea " +"por la declaración :keyword:`import`, o invocando funciones como :func:" +"`importlib.import_module` y la incorporada :func:`__import__`. Un objeto de " +"módulo tiene un espacio de nombres implementado por un objeto de diccionario " +"(éste es el diccionario al que hace referencia el atributo de funciones " +"``__globals__`` definido en el módulo). Las referencias de atributos son " +"traducidas a búsquedas en este diccionario, p. ej., ``m.x`` es equivalente a " +"``m.__dict__[“x”]``. Un objeto de módulo no contiene el objeto de código " +"utilizado para iniciar el módulo (ya que no es necesario una vez que la " +"inicialización es realizada)." #: ../Doc/reference/datamodel.rst:741 msgid "" "Attribute assignment updates the module's namespace dictionary, e.g., ``m.x " "= 1`` is equivalent to ``m.__dict__[\"x\"] = 1``." msgstr "" +"La asignación de atributos actualiza el diccionario de espacio de nombres " +"del módulo, p. ej., ``m.x = 1`` es equivalente a ``m.__dict__[“x”] = 1``." #: ../Doc/reference/datamodel.rst:751 msgid "" @@ -1260,12 +1374,25 @@ msgid "" "loaded dynamically from a shared library, it is the pathname of the shared " "library file." msgstr "" +"Atributos predefinidos (escribibles): :attr:`__name__` es el nombre del " +"módulo; :attr:`__doc__` es la cadena de documentación del módulo, o ``None`` " +"si no se encuentra disponible; :attr:`__annotations__` (opcional) es un " +"diccionario que contiene :term:`variable annotations ` " +"recolectado durante la ejecución del cuerpo del módulo; :attr:`__file__` es " +"el nombre de ruta del archivo en el cual el módulo fue cargado, si fue " +"cargado desde un archivo. El atributo :attr:`__file__` puede faltar para " +"ciertos tipos de módulos, tal como módulos C que son vinculados " +"estáticamente al intérprete; para módulos de extensión cargados " +"dinámicamente desde una librería compartida, es el nombre de ruta del " +"archivo de la librería compartida." #: ../Doc/reference/datamodel.rst:764 msgid "" "Special read-only attribute: :attr:`~object.__dict__` is the module's " "namespace as a dictionary object." msgstr "" +"El atributo especial de solo lectura :attr:`~object.__dict__` es el espacio " +"de nombres del módulo como un objeto de diccionario." #: ../Doc/reference/datamodel.rst:769 msgid "" @@ -1274,10 +1401,15 @@ msgid "" "still has live references. To avoid this, copy the dictionary or keep the " "module around while using its dictionary directly." msgstr "" +"Debido a la manera en la que CPython limpia los diccionarios de módulo, el " +"diccionario de módulo será limpiado cuando el módulo se encuentra fuera de " +"alcance, incluso si el diccionario aún tiene referencias existentes. Para " +"evitar esto, copie el diccionario o mantenga el módulo cerca mientras usa el " +"diccionario directamente." #: ../Doc/reference/datamodel.rst:831 msgid "Custom classes" -msgstr "" +msgstr "Clases personalizadas" #: ../Doc/reference/datamodel.rst:775 msgid "" @@ -1294,6 +1426,19 @@ msgid "" "found in the documentation accompanying the 2.3 release at https://www." "python.org/download/releases/2.3/mro/." msgstr "" +"Los tipos de clases personalizadas son normalmente creadas por definiciones " +"de clases (ver sección :ref:`class`). Una clase tiene implementado un " +"espacio de nombres por un objeto de diccionario. Las referencias de " +"atributos de clase son traducidas a búsquedas en este diccionario, p. ej., " +"``C.x`` es traducido a ``C.__dict__[“x”]`` (aunque hay una serie de enlaces " +"que permiten la ubicación de atributos por otros medios). Cuando el nombre " +"de atributo no es encontrado ahí, la búsqueda de atributo continúa en las " +"clases base. Esta búsqueda de las clases base utiliza la orden de resolución " +"de métodos C3 que se comporta correctamente aún en la presencia de " +"estructuras de herencia ‘diamante’ donde existen múltiples rutas de herencia " +"que llevan a un ancestro común. Detalles adicionales en el MRO C3 utilizados " +"por Python pueden ser encontrados en la documentación correspondiente a la " +"versión 2.3 en https://www.python.org/download/releases/2.3/mro/." #: ../Doc/reference/datamodel.rst:799 msgid "" @@ -1305,18 +1450,30 @@ msgid "" "attributes retrieved from a class may differ from those actually contained " "in its :attr:`~object.__dict__`." msgstr "" +"Cuando la referencia de un atributo de clase (digamos, para la clase :class:" +"`C`) produce un objeto de método de clase, éste es transformado a un objeto " +"de método de instancia cuyo atributo :attr:`__self__` es :class:`C`. Cuando " +"produce un objeto de un método estático, éste es transformado al objeto " +"envuelto por el objeto de método estático. Ver sección :ref:`descriptors` " +"para otra manera en la que los atributos obtenidos de una clase pueden " +"diferir de los que en realidad están contenidos en su :attr:`~object." +"__dict__`." #: ../Doc/reference/datamodel.rst:809 msgid "" "Class attribute assignments update the class's dictionary, never the " "dictionary of a base class." msgstr "" +"Las asignaciones de atributos de clase actualizan el diccionario de la " +"clase, nunca el diccionario de la clase base." #: ../Doc/reference/datamodel.rst:814 msgid "" "A class object can be called (see above) to yield a class instance (see " "below)." msgstr "" +"Un objeto de clase puede ser invocado (ver arriba) para producir una " +"instancia de clase (ver a continuación)." #: ../Doc/reference/datamodel.rst:824 msgid "" @@ -1329,10 +1486,19 @@ msgid "" "(optional) is a dictionary containing :term:`variable annotations ` collected during class body execution." msgstr "" +"Atributos especiales: :attr:`~definition.__name__` es el nombre de la " +"clase; :attr:`__module__` es el nombre del módulo en el que la clase fue " +"definida; :attr:`~object.__dict__` es el diccionario que contiene el espacio " +"de nombres de la clase; :attr:`~class.__bases__` es una tupla que contiene " +"las clases base, en orden de ocurrencia en la lista de clases base; :attr:" +"`__doc__` es la cadena de documentación de la clase, o ``None`` si no está " +"definida; :attr:`__annotations__` (opcional) es un diccionario que contiene :" +"term:`variable annotations ` recolectado durante la " +"ejecución del cuerpo de la clase." #: ../Doc/reference/datamodel.rst:874 msgid "Class instances" -msgstr "" +msgstr "Instancias de clase" #: ../Doc/reference/datamodel.rst:840 msgid "" @@ -1350,6 +1516,21 @@ msgid "" "class attribute is found, and the object's class has a :meth:`__getattr__` " "method, that is called to satisfy the lookup." msgstr "" +"Una instancia de clase es creado al invocar un objeto de clase (ver " +"arriba). Una instancia de clase tiene implementado un espacio de nombres " +"como diccionario que es el primer lugar en el que se buscan referencias de " +"atributos. Cuando un atributo no es encontrado ahí, y la clase de instancia " +"tiene un atributo con ese nombre, la búsqueda continúa con los atributos de " +"clase. Si se encuentra que un atributo de clase es un objeto de función " +"definido por el usuario, es transformado en un objeto de método de instancia " +"cuyo atributo :attr:`__self__` es la instancia. Los objetos de método y " +"método de clase estáticos también son transformados; ver más adelante debajo " +"de “Clases”. Ver sección :ref:`descriptors` para otra forma en la que los " +"atributos de una clase obtenida a través de sus instancias puede diferir de " +"los objetos realmente almacenados en el :attr:`~object.__dict__` de la " +"clase. Si no se encuentra ningún atributo de clase, y la clase del objeto " +"tiene un método :meth:`__getattr__`, éste es llamado para satisfacer la " +"búsqueda." #: ../Doc/reference/datamodel.rst:856 msgid "" @@ -1358,22 +1539,31 @@ msgid "" "`__delattr__` method, this is called instead of updating the instance " "dictionary directly." msgstr "" +"Asignación y eliminación de atributos actualizan el diccionario de la " +"instancia, nunca el diccionario de la clase. Si la clase tiene un método :" +"meth:`__setattr__` o :meth:`__delattr__`, éste es invocado en lugar de " +"actualizar el diccionario de la instancia directamente." #: ../Doc/reference/datamodel.rst:866 msgid "" "Class instances can pretend to be numbers, sequences, or mappings if they " "have methods with certain special names. See section :ref:`specialnames`." msgstr "" +"Instancias de clases pueden pretender ser números, secuencias o mapeos si " +"tienen métodos con ciertos nombres especiales. Ver sección :ref:" +"`specialnames`." #: ../Doc/reference/datamodel.rst:873 msgid "" "Special attributes: :attr:`~object.__dict__` is the attribute dictionary; :" "attr:`~instance.__class__` is the instance's class." msgstr "" +"Atributos especiales: :attr:`~object.__dict__` es el diccionario de " +"atributos; :attr:`~instance.__class__` es la clase de la instancia." #: ../Doc/reference/datamodel.rst:900 msgid "I/O objects (also known as file objects)" -msgstr "" +msgstr "Objetos E/S (también conocidos como objetos de archivo)" #: ../Doc/reference/datamodel.rst:890 msgid "" @@ -1383,6 +1573,11 @@ msgid "" "makefile` method of socket objects (and perhaps by other functions or " "methods provided by extension modules)." msgstr "" +"Un :term:`file object` representa un archivo abierto. Diversos accesos " +"directos se encuentran disponibles para crear objetos de archivo: la función " +"incorporada :func:`open`, así como :func:`os.popen`, :func:`os.fdopen`, y el " +"método de objetos socket :meth:`~socket.makefile` (y quizás por otras " +"funciones y métodos proporcionados por módulos de extensión)." #: ../Doc/reference/datamodel.rst:896 msgid "" @@ -1391,10 +1586,15 @@ msgid "" "and error streams; they are all open in text mode and therefore follow the " "interface defined by the :class:`io.TextIOBase` abstract class." msgstr "" +"Los objetos ``sys.stdin``, ``sys.stdout`` y ``sys.stderr`` son iniciados a " +"objetos de archivos correspondientes a la entrada y salida estándar del " +"intérprete, así como flujos de error; todos ellos están abiertos en el modo " +"de texto y por lo tanto siguen la interface definida por la clase abstracta :" +"class:`io.TextIOBase`." #: ../Doc/reference/datamodel.rst:1145 msgid "Internal types" -msgstr "" +msgstr "Tipos internos" #: ../Doc/reference/datamodel.rst:907 msgid "" @@ -1402,10 +1602,13 @@ msgid "" "Their definitions may change with future versions of the interpreter, but " "they are mentioned here for completeness." msgstr "" +"Algunos tipos utilizados internamente por el intérprete son expuestos al " +"usuario. Sus definiciones pueden cambiar en futuras versiones del " +"intérprete, pero son mencionadas aquí para complementar." #: ../Doc/reference/datamodel.rst:982 msgid "Code objects" -msgstr "" +msgstr "Objetos de código" #: ../Doc/reference/datamodel.rst:914 msgid "" @@ -1418,6 +1621,16 @@ msgid "" "run-time). Unlike function objects, code objects are immutable and contain " "no references (directly or indirectly) to mutable objects." msgstr "" +"Los objetos de código representan código de Python ejecutable *compilado por " +"bytes*, o :term:`bytecode`. La diferencia entre un objeto de código y un " +"objeto de función es que el objeto de función contiene una referencia " +"explícita a los globales de la función (el módulo en el que fue definido), " +"mientras el objeto de código no contiene contexto; de igual manera los " +"valores por defecto de los argumentos son almacenados en el objeto de " +"función, no en el objeto de código (porque representan valores calculados en " +"tiempo de ejecución). A diferencia de objetos de función, los objetos de " +"código son inmutables y no contienen referencias (directas o indirectas) a " +"objetos mutables." #: ../Doc/reference/datamodel.rst:941 msgid "" @@ -1442,6 +1655,28 @@ msgid "" "interpreter); :attr:`co_stacksize` is the required stack size; :attr:" "`co_flags` is an integer encoding a number of flags for the interpreter." msgstr "" +"Atributos especiales de solo lectura: :attr:`co_name` da el nombre de la " +"función; :attr:`co_argcount` es el número total de argumentos posicionales " +"(incluyendo argumentos únicamente posicionales y argumentos con valores por " +"default); :attr:`co_posonlyargcount` es el número de argumentos únicamente " +"posicionales (incluyendo argumentos con valores por default); :attr:" +"`co_kwonlyargcountp` es el número de argumentos solo de palabra clave " +"(incluyendo argumentos con valores por default); :attr:`co_nlocals` es el " +"número de variables usadas por la función (incluyendo argumentos); :attr:" +"`co_varnames` es una tupla que contiene los nombres con las variables " +"locales (empezando con los nombres de argumento); :attr:`co_cellvars` es una " +"tupla que contiene los nombres de variables locales que son referenciadas " +"por funciones anidadas; :attr:`co_freevars` es una tupla que contiene los " +"nombres de variables libres; :attr:`co_code` es una cadena que representa la " +"secuencia de instrucciones de bytecode; :attr:`co_consts` es una tupla que " +"contiene las literales usadas por el bytecode; :attr:`co_names` es una tupla " +"que contiene los nombres usados por el bytecode; :attr:`co_filename` es el " +"nombre de archivo de donde el código fue compilado; :attr:`co_firstlineno` " +"es el primer número de línea de la función; :attr:`co_lnotab` es una cadena " +"codificando el mapeo desde el desplazamiento de bytecode al número de líneas " +"(ver el código fuente del intérprete para más detalles); :attr:" +"`co_stacksize` es el tamaño de pila requerido; :attr:`co_flags` es un entero " +"codificando el número de banderas para el intérprete." #: ../Doc/reference/datamodel.rst:965 msgid "" @@ -1451,6 +1686,12 @@ msgid "" "``**keywords`` syntax to accept arbitrary keyword arguments; bit ``0x20`` is " "set if the function is a generator." msgstr "" +"Los siguientes bits de bandera son definidos por :attr:`co_flags` : bit " +"``0x04`` es establecido si la función utiliza la sintaxis ``*arguments`` " +"para aceptar un número arbitrario de argumentos posicionales; bit ``0x08`` " +"es establecido si la función utiliza la sintaxis ``**keywords`` para aceptar " +"argumentos de palabras clave arbitrarios; bit ``0x20`` es establecido si la " +"función es un generador." #: ../Doc/reference/datamodel.rst:971 msgid "" @@ -1460,26 +1701,38 @@ msgid "" "compiled with future division enabled; bits ``0x10`` and ``0x1000`` were " "used in earlier versions of Python." msgstr "" +"Declaraciones de características futuras (``from __future__ import " +"division``) también utiliza bits en :attr:`co_flags` para indicar si el " +"objeto de código fue compilado con alguna característica particular " +"habilitada: el bit ``0x2000`` es establecido si la función fue compilada con " +"división futura habilitada; los bits ``0x10`` y ``0x1000`` fueron utilizados " +"en versiones previas de Python." #: ../Doc/reference/datamodel.rst:977 msgid "Other bits in :attr:`co_flags` are reserved for internal use." -msgstr "" +msgstr "Otros bits en :attr:`co_flags` son reservados para uso interno." #: ../Doc/reference/datamodel.rst:981 msgid "" "If a code object represents a function, the first item in :attr:`co_consts` " "is the documentation string of the function, or ``None`` if undefined." msgstr "" +"Si un objeto de código representa una función, el primer elemento en :attr:" +"`co_consts` es la cadena de documentación de la función, o ``None`` si no " +"está definido." #: ../Doc/reference/datamodel.rst:1041 msgid "Frame objects" -msgstr "" +msgstr "Objetos de marco" #: ../Doc/reference/datamodel.rst:989 msgid "" "Frame objects represent execution frames. They may occur in traceback " "objects (see below), and are also passed to registered trace functions." msgstr "" +"Los objetos de marco representan marcos de ejecución. Pueden ocurrir en " +"objetos de rastreo (ver a continuación), y son también pasados hacia " +"funciones de rastreo registradas." #: ../Doc/reference/datamodel.rst:1000 msgid "" @@ -1491,6 +1744,14 @@ msgid "" "names; :attr:`f_lasti` gives the precise instruction (this is an index into " "the bytecode string of the code object)." msgstr "" +"Atributos especiales de solo lectura: :attr:`f_back` es para el marco de " +"pila anterior (hacia quien produce el llamado), o ``None`` si éste es el " +"marco de pila inferior; :attr:`f_code` es el objeto de código ejecutado en " +"este marco; :attr:`f_locals` es el diccionario utilizado para buscar " +"variables locales; :attr:`f_globals` es usado por las variables globales; :" +"attr:`f_builtins` es utilizado por nombres incorporados (intrínsecos); :attr:" +"`f_lasti` da la instrucción precisa (éste es un índice dentro de la cadena " +"de bytecode del objeto de código)." #: ../Doc/reference/datamodel.rst:1014 msgid "" @@ -1499,6 +1760,11 @@ msgid "" "debugger). Normally an event is triggered for each new source line - this " "can be disabled by setting :attr:`f_trace_lines` to :const:`False`." msgstr "" +"Atributos especiales escribibles: :attr:`f_trace`, de lo contrario ``None``, " +"es una función llamada por distintos eventos durante la ejecución del código " +"(éste es utilizado por el depurador). Normalmente un evento es desencadenado " +"por cada una de las líneas fuente - esto puede ser deshabilitado " +"estableciendo :attr:`f_trace_lines` a :const:`False`." #: ../Doc/reference/datamodel.rst:1019 msgid "" @@ -1507,6 +1773,11 @@ msgid "" "undefined interpreter behaviour if exceptions raised by the trace function " "escape to the function being traced." msgstr "" +"Las implementaciones *pueden* permitir que eventos por código de operación " +"sean solicitados estableciendo :attr:`f_trace_opcodes` a :const:`True`. " +"Tenga en cuenta que esto puede llevar a un comportamiento indefinido del " +"intérprete si se levantan excepciones por la función de rastreo escape hacia " +"la función que está siendo rastreada." #: ../Doc/reference/datamodel.rst:1024 msgid "" @@ -1515,10 +1786,15 @@ msgid "" "most frame). A debugger can implement a Jump command (aka Set Next " "Statement) by writing to f_lineno." msgstr "" +":attr:`f_lineno` es el número de línea actual del marco --- escribiendo a " +"esta forma dentro de una función de rastreo salta a la línea dada (solo para " +"el último marco). Un depurador puede implementar un comando de salto " +"(*Jump*) (también conocido como *Set Next Statement*) al escribir en " +"f_lineno." #: ../Doc/reference/datamodel.rst:1029 msgid "Frame objects support one method:" -msgstr "" +msgstr "Objetos de marco soportan un método:" #: ../Doc/reference/datamodel.rst:1033 msgid "" @@ -1527,14 +1803,19 @@ msgid "" "This helps break reference cycles involving frame objects (for example when " "catching an exception and storing its traceback for later use)." msgstr "" +"Este método limpia todas las referencias a variables locales mantenidas por " +"el marco. También, si el marco pertenecía a un generador, éste es " +"finalizado. Esto ayuda a interrumpir los ciclos de referencia que involucran " +"objetos de marco (por ejemplo al detectar una excepción y almacenando su " +"rastro para uso posterior)." #: ../Doc/reference/datamodel.rst:1039 msgid ":exc:`RuntimeError` is raised if the frame is currently executing." -msgstr "" +msgstr ":exc:`RuntimeError` es lanzado si el marco se encuentra en ejecución." #: ../Doc/reference/datamodel.rst:1101 msgid "Traceback objects" -msgstr "" +msgstr "Objetos de seguimiento de pila (traceback)" #: ../Doc/reference/datamodel.rst:1056 msgid "" @@ -1542,6 +1823,10 @@ msgid "" "object is implicitly created when an exception occurs, and may also be " "explicitly created by calling :class:`types.TracebackType`." msgstr "" +"Los objetos de seguimiento de pila representan el trazo de pila (*stack " +"trace*) de una excepción. Un objeto de rastreo es creado de manera implícita " +"cuando se da una excepción, y puede ser creada de manera explícita al " +"llamar :class:`types.TracebackType`." #: ../Doc/reference/datamodel.rst:1060 msgid "" @@ -1552,6 +1837,13 @@ msgid "" "`try`.) It is accessible as the third item of the tuple returned by ``sys." "exc_info()``, and as the ``__traceback__`` attribute of the caught exception." msgstr "" +"Para seguimientos de pila (tracebacks) creados de manera implícita, cuando " +"la búsqueda por un manejo de excepciones desenvuelve la pila de ejecución, " +"en cada nivel de desenvolvimiento se inserta un objeto de rastreo al frente " +"del rastreo actual. Cuando se entra a un manejo de excepción, la pila de " +"rastreo se vuelve disponible para el programa. (Ver sección :ref:`try`.) Es " +"accesible como el tercer elemento de la tupla retornada por ``sys." +"exc_info()``, y como el atributo ``__traceback__`` de la excepción capturada." #: ../Doc/reference/datamodel.rst:1068 msgid "" @@ -1559,6 +1851,10 @@ msgid "" "(nicely formatted) to the standard error stream; if the interpreter is " "interactive, it is also made available to the user as ``sys.last_traceback``." msgstr "" +"Cuando el programa no contiene un gestor apropiado, el trazo de pila es " +"escrito (muy bien formateado) a la secuencia de error estándar; si el " +"intérprete es interactivo, también se vuelve disponible al usuario como " +"``sys.last_traceback``." #: ../Doc/reference/datamodel.rst:1073 msgid "" @@ -1566,6 +1862,9 @@ msgid "" "to determine how the ``tb_next`` attributes should be linked to form a full " "stack trace." msgstr "" +"Para seguimientos de pila creados de forma explícita, depende de su creador " +"determinar cómo los atributos ``tb_next`` deberían ser ligados para formar " +"un trazo de pila completo (*full stack trace*)." #: ../Doc/reference/datamodel.rst:1083 msgid "" @@ -1576,6 +1875,13 @@ msgid "" "number of its frame object if the exception occurred in a :keyword:`try` " "statement with no matching except clause or with a finally clause." msgstr "" +"Atributos especiales de solo lectura: :attr:`tb_frame` apunta al marco de " +"ejecución del nivel actual; :attr:`tb_lineno` da el número de línea donde " +"ocurrió la excepción; :attr:`tb_lasti` indica la instrucción precisa. El " +"número de línea y la última instrucción en el seguimiento de pila puede " +"diferir del número de línea de su objeto de marco si la excepción ocurrió en " +"una declaración :keyword:`try` sin una cláusula de excepción (except) " +"correspondiente o con una cláusula *finally*." #: ../Doc/reference/datamodel.rst:1095 msgid "" @@ -1583,22 +1889,31 @@ msgid "" "trace (towards the frame where the exception occurred), or ``None`` if there " "is no next level." msgstr "" +"Atributo especial escribible: :attr:`tb_next` es el siguiente nivel en el " +"trazo de pila (hacia el marco en donde ocurrió la excepción), o ``None`` si " +"no existe un siguiente nivel." #: ../Doc/reference/datamodel.rst:1099 msgid "" "Traceback objects can now be explicitly instantiated from Python code, and " "the ``tb_next`` attribute of existing instances can be updated." msgstr "" +"Los objetos de seguimiento de pila ya pueden ser instanciados de manera " +"explícita desde código de Python, y el atributo ``tb_next`` de instancias " +"existentes puede ser actualizado." #: ../Doc/reference/datamodel.rst:1127 msgid "Slice objects" -msgstr "" +msgstr "Objetos de segmento (Slice objects)" #: ../Doc/reference/datamodel.rst:1106 msgid "" "Slice objects are used to represent slices for :meth:`__getitem__` methods. " "They are also created by the built-in :func:`slice` function." msgstr "" +"Los objetos de segmento son utilizados para representar segmentos para " +"métodos :meth:`__getitem__`. También son creados por la función incorporada :" +"func:`slice`." #: ../Doc/reference/datamodel.rst:1114 msgid "" @@ -1606,10 +1921,14 @@ msgid "" "`~slice.stop` is the upper bound; :attr:`~slice.step` is the step value; " "each is ``None`` if omitted. These attributes can have any type." msgstr "" +"Atributos especiales de solo lectura: :attr:`~slice.start` es el límite " +"inferior; :attr:`~slice.stop` es el límite superior; :attr:`~slice.step` es " +"el valor de paso; cada uno es ``None`` si es omitido. Estos atributos pueden " +"ser de cualquier tipo." #: ../Doc/reference/datamodel.rst:1118 msgid "Slice objects support one method:" -msgstr "" +msgstr "Los objetos de segmento soportan un método:" #: ../Doc/reference/datamodel.rst:1122 msgid "" @@ -1620,10 +1939,16 @@ msgid "" "stride length of the slice. Missing or out-of-bounds indices are handled in " "a manner consistent with regular slices." msgstr "" +"Este método toma un argumento *length* de entero simple y calcula " +"información relacionada con el segmento que el mismo describiría si fuera " +"aplicado a una secuencia de elementos *length*. Retorna una tupla de tres " +"enteros; respectivamente estos son los índices *start* y *stop* y el *step* " +"o longitud del paso del segmento. Índices faltantes o fuera de los límites " +"son manipulados de manera consistente con segmentos regulares." #: ../Doc/reference/datamodel.rst:1137 msgid "Static method objects" -msgstr "" +msgstr "Objetos de método estático" #: ../Doc/reference/datamodel.rst:1130 msgid "" @@ -1636,10 +1961,20 @@ msgid "" "callable, although the objects they wrap usually are. Static method objects " "are created by the built-in :func:`staticmethod` constructor." msgstr "" +"Los objetos de método estático proveen una forma de anular la transformación " +"de objetos de función a objetos de método descritos anteriormente. Un objeto " +"de método estático es una envoltura (*wrapper*) alrededor de cualquier otro " +"objeto, usualmente un objeto de método definido por usuario. Cuando un " +"objeto de método estático es obtenido desde una clase o una instancia de " +"clase, usualmente el objeto retornado es el objeto envuelto, el cual no está " +"objeto a ninguna transformación adicional. Los objetos de método estático no " +"pueden ser llamados, aunque generalmente los objetos que estos envuelven sí. " +"Los objetos de método estático son creados por el constructor incorporado :" +"func:`staticmethod`." #: ../Doc/reference/datamodel.rst:1145 msgid "Class method objects" -msgstr "" +msgstr "Objetos de método de clase" #: ../Doc/reference/datamodel.rst:1140 msgid "" @@ -1649,10 +1984,17 @@ msgid "" "retrieval is described above, under \"User-defined methods\". Class method " "objects are created by the built-in :func:`classmethod` constructor." msgstr "" +"Un objeto de método de clase, igual que un objeto de método estático, es un " +"envoltorio (wrapper) alrededor de otro objeto que altera la forma en la que " +"el objeto es obtenido desde las clases y las instancias de clase. El " +"comportamiento de los objetos de método de clase sobre tal obtención es " +"descrita más arriba, debajo de “Métodos definidos por usuario”. Objetos de " +"clase de método son creados por el constructor incorporado :func:" +"`classmethod`." #: ../Doc/reference/datamodel.rst:1150 msgid "Special method names" -msgstr "" +msgstr "Nombres especiales de método" #: ../Doc/reference/datamodel.rst:1156 msgid "" @@ -1667,6 +2009,17 @@ msgid "" "appropriate method is defined (typically :exc:`AttributeError` or :exc:" "`TypeError`)." msgstr "" +"Una clase puede implementar ciertas operaciones que son invocadas por " +"sintaxis especiales (como operaciones aritméticas o de sub-índice y " +"segmentación) definiendo métodos con nombres especiales. Este es el enfoque " +"de Python hacia :dfn:`operator overloading`, permitiendo a las clases " +"definir su propio comportamiento con respecto a los operadores del lenguaje. " +"Por ejemplo, si una clase define un método llamado :meth:`__getitem__`, y " +"``x`` es una instancia de esta clase, entonces ``x[i]`` es aproximadamente " +"equivalente a ``type(x).__getitem__(x, i)``. A excepción de donde se " +"menciona, los intentos por ejecutar una operación lanzan una excepción " +"cuando no es definido un método apropiado (normalmente :exc:`AttributeError` " +"o :exc:`TypeError`)." #: ../Doc/reference/datamodel.rst:1166 msgid "" @@ -1676,6 +2029,11 @@ msgid "" "instances will raise a :exc:`TypeError` (without falling back to :meth:" "`__getitem__`). [#]_" msgstr "" +"Estableciendo un método especial a ``None`` indica que la operación " +"correspondiente no se encuentra disponible. Por ejemplo, si una clase " +"establece :meth:`__iter__` a ``None``, la clase no es iterable, así que " +"llamando :func:`iter` en sus instancias lanzará un :exc:`TypeError` (sin " +"volver a :meth:`__getitem__`). [#]_" #: ../Doc/reference/datamodel.rst:1172 msgid "" @@ -1686,10 +2044,17 @@ msgid "" "sense. (One example of this is the :class:`~xml.dom.NodeList` interface in " "the W3C's Document Object Model.)" msgstr "" +"Cuando se implementa una clase que emula cualquier tipo incorporado, es " +"importante que la emulación solo sea implementado al grado que hace sentido " +"para el objeto que está siendo modelado. Por ejemplo, algunas secuencias " +"pueden trabajar bien con la obtención de elementos individuales, pero " +"extraer un segmento puede no tener mucho sentido. (Un ejemplo de esto es la " +"interfaz :class:`~xml.dom.NodeList`, en el Modelo de Objetos del Documento " +"del W3C.)" #: ../Doc/reference/datamodel.rst:1183 msgid "Basic customization" -msgstr "" +msgstr "Personalización básica" #: ../Doc/reference/datamodel.rst:1189 msgid "" @@ -1700,6 +2065,13 @@ msgid "" "(the call to the class). The return value of :meth:`__new__` should be the " "new object instance (usually an instance of *cls*)." msgstr "" +"Es llamado para crear una nueva instancia de clase *cls*. :meth:`__new__` es " +"un método estático (como un caso especial, así que no se necesita declarar " +"como tal) que toma la clase de donde fue solicitada una instancia como su " +"primer argumento. Los argumentos restantes son aquellos que se pasan a la " +"expresión del constructor de objetos (para llamar a la clase). El valor " +"retornado de :meth:`__new__` deberá ser la nueva instancia de objeto " +"(normalmente una instancia de *cls*)." #: ../Doc/reference/datamodel.rst:1196 msgid "" @@ -1708,6 +2080,10 @@ msgid "" "with appropriate arguments and then modifying the newly-created instance as " "necessary before returning it." msgstr "" +"Implementaciones típicas crean una nueva instancia de la clase invocando el " +"método :meth:`__new__` de la súper clase utilizando ``super().__new__(cls[, " +"…])`` con argumentos apropiados y después modificando la recién creada " +"instancia como necesaria antes de retornarla." #: ../Doc/reference/datamodel.rst:1201 msgid "" @@ -1717,12 +2093,19 @@ msgid "" "new instance and the remaining arguments are the same as were passed to the " "object constructor." msgstr "" +"Si :meth:`__new__` es invocado durante la construcción del objeto y éste " +"retorna una instancia o subclase de *cls*, entonces el nuevo método :meth:" +"`__init__` de la instancia será invocado como ``__init__(self[, …])``, donde " +"*self* es la nueva instancia y los argumentos restantes son iguales como " +"fueron pasados hacia el constructor de objetos." #: ../Doc/reference/datamodel.rst:1206 msgid "" "If :meth:`__new__` does not return an instance of *cls*, then the new " "instance's :meth:`__init__` method will not be invoked." msgstr "" +"Si :meth:`__new__` no retorna una instancia de *cls*, entonces el nuevo " +"método :meth:`__init__` de la instancia no será invocado." #: ../Doc/reference/datamodel.rst:1209 msgid "" @@ -1731,6 +2114,10 @@ msgid "" "commonly overridden in custom metaclasses in order to customize class " "creation." msgstr "" +":meth:`__new__` es destinado principalmente para permitir a subclases de " +"tipos inmutables (como int, str, o tuple) personalizar la creación de " +"instancias. También es comúnmente anulado en metaclases personalizadas con " +"el fin de personalizar la creación de clase." #: ../Doc/reference/datamodel.rst:1218 msgid "" @@ -1741,6 +2128,13 @@ msgid "" "ensure proper initialization of the base class part of the instance; for " "example: ``super().__init__([args...])``." msgstr "" +"Llamado después de que la instancia ha sido creada (por :meth:`__new__`), " +"pero antes es retornada a quien produce la llamada. Los argumentos son " +"aquellos pasados a la expresión del constructor de la clase. Si una clase " +"base tiene un método :meth:`__init__`, el método :meth:`__init__` de clase " +"derivada, de existir, debe llamarlo explícitamente para asegurar la " +"inicialización apropiada de la clase base que es parte de la instancia; por " +"ejemplo: ``super().__init__([args…])``." #: ../Doc/reference/datamodel.rst:1225 msgid "" @@ -1749,6 +2143,11 @@ msgid "" "it), no non-``None`` value may be returned by :meth:`__init__`; doing so " "will cause a :exc:`TypeError` to be raised at runtime." msgstr "" +"Debido a que :meth:`__new__` y :meth:`__init__` trabajan juntos construyendo " +"objetos (:meth:`__new__` para crearlo y :meth:`__init__` para " +"personalizarlo), ningún valor distinto a ``None`` puede ser retornado por :" +"meth:`__init__`; hacer esto puede causar que se lance una excepción :exc:" +"`TypeError` en tiempo de ejecución." #: ../Doc/reference/datamodel.rst:1238 msgid "" @@ -1758,6 +2157,11 @@ msgid "" "explicitly call it to ensure proper deletion of the base class part of the " "instance." msgstr "" +"Llamado cuando la instancia es a punto de ser destruida. Esto también es " +"llamado finalizador o (indebidamente) destructor. Si una clase base tiene un " +"método :meth:`__del__` el método :meth:`__del__` de la clase derivada, de " +"existir, debe llamarlo explícitamente para asegurar la eliminación adecuada " +"de la parte de la clase base de la instancia." #: ../Doc/reference/datamodel.rst:1244 msgid "" @@ -1768,12 +2172,20 @@ msgid "" "about to be destroyed; the current :term:`CPython` implementation only calls " "it once." msgstr "" +"Es posible (¡aunque no recomendable!) para el método :meth:`__del__` " +"posponer la destrucción de la instancia al crear una nueva referencia hacia " +"ésta. Esto es llamado *resurrección* de objeto. Es dependiente de la " +"implementación si :meth:`__del__` es llamado una segunda vez cuando un " +"objeto resucitado está por ser destruido; la implementación :term:`CPython` " +"actual únicamente lo llama una vez." #: ../Doc/reference/datamodel.rst:1251 msgid "" "It is not guaranteed that :meth:`__del__` methods are called for objects " "that still exist when the interpreter exits." msgstr "" +"No está garantizado que los métodos :meth:`__del__` sean llamados para " +"objetos que aún existen cuando el intérprete se cierra." #: ../Doc/reference/datamodel.rst:1256 msgid "" @@ -1781,10 +2193,13 @@ msgid "" "the reference count for ``x`` by one, and the latter is only called when " "``x``'s reference count reaches zero." msgstr "" +"``del x`` no llama directamente ``x.__del__()`` --- el primero disminuye el " +"conteo de referencia para ``x`` uno por uno, y el segundo es llamado " +"únicamente cuando el conteo de referencias de ``x`` llega a cero." #: ../Doc/reference/datamodel.rst:1271 msgid "Documentation for the :mod:`gc` module." -msgstr "" +msgstr "Documentación para el módulo :mod:`gc`." #: ../Doc/reference/datamodel.rst:1275 msgid "" @@ -1792,6 +2207,10 @@ msgid "" "invoked, exceptions that occur during their execution are ignored, and a " "warning is printed to ``sys.stderr`` instead. In particular:" msgstr "" +"Debido a las circunstancias inciertas bajo las que los métodos :meth:" +"`__del__` son invocados, las excepciones que ocurren durante su ejecución " +"son ignoradas, y una advertencia es mostrada hacia ``sys.stderr``. En " +"particular:" #: ../Doc/reference/datamodel.rst:1279 msgid "" @@ -1801,6 +2220,12 @@ msgid "" "may already be taken by the code that gets interrupted to execute :meth:" "`__del__`." msgstr "" +":meth:`__del__` puede ser invocado cuando código arbitrario es ejecutado, " +"incluyendo el de cualquier hilo arbitrario. Si :meth:`__del__` necesita " +"realizar un cierre de exclusión mutua (*lock*) o invocar cualquier otro " +"recurso que lo esté bloqueando, podría provocar un bloqueo muto (*deadlock*) " +"ya que el recurso podría estar siendo utilizado por el código que se " +"interrumpe al ejecutar :meth:`__del__`." #: ../Doc/reference/datamodel.rst:1285 msgid "" @@ -1812,6 +2237,14 @@ msgid "" "such globals exist, this may help in assuring that imported modules are " "still available at the time when the :meth:`__del__` method is called." msgstr "" +":meth:`__del__` puede ser ejecutado durante el cierre del intérprete. Como " +"consecuencia, las variables globales que necesita para acceder (incluyendo " +"otros módulos) podrían haber sido borradas o establecidas a ``None``. Python " +"garantiza que los globales cuyo nombre comienza con un guión bajo simple " +"sean borrados de su módulo antes que los globales sean borrados; si no " +"existen otras referencias a dichas globales, esto puede ayudar asegurando " +"que los módulos importados aún se encuentren disponibles al momento de " +"llamar al método :meth:`__del__`." #: ../Doc/reference/datamodel.rst:1300 msgid "" @@ -1824,12 +2257,23 @@ msgid "" "`__repr__` but not :meth:`__str__`, then :meth:`__repr__` is also used when " "an \"informal\" string representation of instances of that class is required." msgstr "" +"Llamado por la función incorporada :func:`repr` para calcular la cadena " +"“oficial” de representación de un objeto. Si es posible, esto debería verse " +"como una expresión de Python válida que puede ser utilizada para recrear un " +"objeto con el mismo valor (bajo el ambiente adecuado). Si no es posible, una " +"cadena con la forma ``<…some useful description…>`` debe ser retornada. El " +"valor de retorno debe ser un objeto de cadena (*string*). Si una clase " +"define :meth:`__repr__` pero no :meth:`__str__`, entonces :meth:`__repr__` " +"también es utilizado cuando una cadena “informal” de representación de " +"instancias de esas clases son requeridas." #: ../Doc/reference/datamodel.rst:1309 msgid "" "This is typically used for debugging, so it is important that the " "representation is information-rich and unambiguous." msgstr "" +"Esto es típicamente utilizado para depurar, así que es importante que la " +"representación sea rica en información e inequívoca." #: ../Doc/reference/datamodel.rst:1320 msgid "" @@ -1838,6 +2282,10 @@ msgid "" "string representation of an object. The return value must be a :ref:`string " "` object." msgstr "" +"Llamado por :func:`str(object) ` y las funciones incorporadas :func:" +"`format` y :func:`print` para calcular la “informal” o bien mostrada cadena " +"de representación de un objeto. El valor de retorno debe ser un objeto :ref:" +"`string `." #: ../Doc/reference/datamodel.rst:1325 msgid "" @@ -1845,18 +2293,25 @@ msgid "" "expectation that :meth:`__str__` return a valid Python expression: a more " "convenient or concise representation can be used." msgstr "" +"Este método difiere de :meth:`object.__repr__` en que no hay expectativas de " +"que :meth:`__str__` retorne una expresión de Python válida: una " +"representación más conveniente o concisa pueda ser utilizada." #: ../Doc/reference/datamodel.rst:1329 msgid "" "The default implementation defined by the built-in type :class:`object` " "calls :meth:`object.__repr__`." msgstr "" +"La implementación por defecto definida por el tipo incorporado :class:" +"`object` llama a :meth:`object.__repr__`." #: ../Doc/reference/datamodel.rst:1339 msgid "" "Called by :ref:`bytes ` to compute a byte-string representation " "of an object. This should return a :class:`bytes` object." msgstr "" +"Llamado por :ref:`bytes ` para calcular la representación de la " +"cadena de byte de un objeto. Este deberá retornar un objeto :class:`bytes`." #: ../Doc/reference/datamodel.rst:1350 msgid "" @@ -1869,27 +2324,41 @@ msgid "" "either delegate formatting to one of the built-in types, or use a similar " "formatting option syntax." msgstr "" +"Llamado por la función incorporada :func:`format`, y por extensión, la " +"evaluación de :ref:`formatted string literals ` y el método :meth:" +"`str.format`, para producir la representación “formateada” de un objeto. El " +"argumento *format_spec* es una cadena que contiene una descripción de las " +"opciones de formato deseadas. La interpretación del argumento *format_spec* " +"depende del tipo que implementa :meth:`__format__`, sin embargo, ya sea que " +"la mayoría de las clases deleguen el formato a uno de los tipos " +"incorporados, o utilicen una sintaxis de opción de formato similar." #: ../Doc/reference/datamodel.rst:1360 msgid "" "See :ref:`formatspec` for a description of the standard formatting syntax." msgstr "" +"Ver :ref:`formatspec` para una descripción de la sintaxis de formato " +"estándar." #: ../Doc/reference/datamodel.rst:1362 msgid "The return value must be a string object." -msgstr "" +msgstr "El valor de retorno debe ser un objeto de cadena." #: ../Doc/reference/datamodel.rst:1364 msgid "" "The __format__ method of ``object`` itself raises a :exc:`TypeError` if " "passed any non-empty string." msgstr "" +"El método __format__ del mismo ``object`` lanza un :exc:`TypeError` si se la " +"pasa una cadena no vacía." #: ../Doc/reference/datamodel.rst:1368 msgid "" "``object.__format__(x, '')`` is now equivalent to ``str(x)`` rather than " "``format(str(x), '')``." msgstr "" +"``object.__format__(x, ‘’)`` es ahora equivalente a ``str(x)`` en lugar de " +"``format(str(self), ‘’)``." #: ../Doc/reference/datamodel.rst:1384 msgid "" @@ -1899,6 +2368,11 @@ msgid "" "``x!=y`` calls ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and ``x>=y`` " "calls ``x.__ge__(y)``." msgstr "" +"Estos son los llamados métodos de comparación *rich*. La correspondencia " +"entre símbolos de operador y los nombres de método es de la siguiente " +"manera: ``xy`` " +"llama ``x.__gt__(y)``, y ``x>=y`` llama ``x.__ge__(y)``." #: ../Doc/reference/datamodel.rst:1390 msgid "" @@ -1910,6 +2384,14 @@ msgid "" "statement), Python will call :func:`bool` on the value to determine if the " "result is true or false." msgstr "" +"Un método de comparación *rich* puede retornar el único ``NotImplemented`` " +"si no implementa la operación para un par de argumentos dados. Por " +"convención, ``False`` y ``True`` son retornados para una comparación " +"exitosa. Sin embargo, estos métodos pueden retornar cualquier valor, así que " +"si el operador de comparación es utilizado en un contexto Booleano (p. ej. " +"en la condición de una sentencia ``if``), Python llamará :func:`bool` en " +"dicho valor para determinar si el resultado es verdadero (*true*) o falso " +"(*false*)." #: ../Doc/reference/datamodel.rst:1397 msgid "" @@ -1922,6 +2404,15 @@ msgid "" "``x<=y``. To automatically generate ordering operations from a single root " "operation, see :func:`functools.total_ordering`." msgstr "" +"Por defecto, ``object`` implementa :meth:`__eq__` usando ``is``, retornando " +"``NotImplemented`` en el caso de una comparación falsa: ``True if x is y " +"else NotImplemented``. Para :meth:`__ne__`, por defecto delega a :meth:" +"`__eq__` e invierte el resultado a menos que sea ``NotImplemented``. No hay " +"otras relaciones implícitas entre los operadores de comparación o " +"implementaciones predeterminadas; por ejemplo, la verdad de ``(x .__hash__``." msgstr "" +"Si una clase que anula :meth:`__eq__` necesita conservar la implementación " +"de :meth:`__hash__` de una clase padre, al intérprete se le debe informar " +"explícitamente estableciendo ``__hash__ = .__hash__``." #: ../Doc/reference/datamodel.rst:1473 msgid "" @@ -2009,6 +2549,11 @@ msgid "" "`TypeError` would be incorrectly identified as hashable by an " "``isinstance(obj, collections.abc.Hashable)`` call." msgstr "" +"Si una clase que no anula :meth:`__eq__` desea eliminar el soporte de " +"*hash*, debe incluir ``__hash__ = None`` en la definición de clase. Una " +"clase que define su propio :meth:`__hash__` y que explícitamente lanza un :" +"exc:`TypeError` será identificado de manera incorrecta como de hash " +"calculable por una llamada ``isinstance(obj, collections.abc.Hashable)``." #: ../Doc/reference/datamodel.rst:1482 msgid "" @@ -2017,6 +2562,10 @@ msgid "" "an individual Python process, they are not predictable between repeated " "invocations of Python." msgstr "" +"Por defecto los valores de objetos str y bytes de :meth:`__hash__` son " +"“salados” con un valor aleatorio impredecible. Aunque se mantienen " +"constantes dentro de un proceso Python particular, no son predecibles entre " +"invocaciones repetidas de Python." #: ../Doc/reference/datamodel.rst:1487 msgid "" @@ -2025,6 +2574,10 @@ msgid "" "insertion, O(n^2) complexity. See http://www.ocert.org/advisories/" "ocert-2011-003.html for details." msgstr "" +"Esto tiene la intención de proveer protección contra una negación de " +"servicio causada por entradas cautelosamente elegidas y que explotan el peor " +"caso de rendimiento en la inserción de un diccionario, complejidad O(n^2). " +"Ver http://www.ocert.org/advisories/ocert-2011-003.html para más detalles." #: ../Doc/reference/datamodel.rst:1492 msgid "" @@ -2032,14 +2585,17 @@ msgid "" "made guarantees about this ordering (and it typically varies between 32-bit " "and 64-bit builds)." msgstr "" +"Cambiar los valores hash afectan el orden de la iteración de los sets. " +"Python nunca ha dado garantías en relación a este orden (y típicamente varía " +"entre estructuras de 32-bits y 64-bits)." #: ../Doc/reference/datamodel.rst:1496 msgid "See also :envvar:`PYTHONHASHSEED`." -msgstr "" +msgstr "Ver también :envvar:`PYTHONHASHSEED`." #: ../Doc/reference/datamodel.rst:1498 msgid "Hash randomization is enabled by default." -msgstr "" +msgstr "La aleatorización de hash es habilitada por defecto." #: ../Doc/reference/datamodel.rst:1506 msgid "" @@ -2049,10 +2605,16 @@ msgid "" "considered true if its result is nonzero. If a class defines neither :meth:" "`__len__` nor :meth:`__bool__`, all its instances are considered true." msgstr "" +"Es llamado para implementar pruebas de valores de verdad y la operación " +"incorporada ``bool()``; debe retornar ``False`` o ``True``. Cuando este " +"método no es definido, :meth:`__len__` es llamado, si es definido, y el " +"objeto es considerado verdadero (*true*) si el resultado es diferente de " +"zero. Si la clase no define :meth:`__len__` ni :meth:`__bool__`, todas sus " +"instancias son consideradas verdaderas (*true*)." #: ../Doc/reference/datamodel.rst:1517 msgid "Customizing attribute access" -msgstr "" +msgstr "Personalizando acceso a atributos" #: ../Doc/reference/datamodel.rst:1519 msgid "" @@ -2060,6 +2622,9 @@ msgid "" "access (use of, assignment to, or deletion of ``x.name``) for class " "instances." msgstr "" +"Los siguientes métodos pueden ser definidos para personalizar el significado " +"de acceso a atributos (uso de, asignación a, o borrado de ``x.name``) para " +"instancias de clase." #: ../Doc/reference/datamodel.rst:1527 msgid "" @@ -2070,6 +2635,13 @@ msgid "" "`AttributeError`). This method should either return the (computed) " "attribute value or raise an :exc:`AttributeError` exception." msgstr "" +"Es llamado cuando el acceso a atributos por defecto falla con un :exc:" +"`AttributeError` (ya sea que :meth:`__getattribute__` lanza una excepción :" +"exc:`AttributeError` porque *name* no es un atributo de instancia o un " +"atributo en el árbol de clase para ``self``; o el :meth:`__get__` de la " +"propiedad de *name* lanza una excepción :exc:`AttributeError`). Este método " +"debe retornar el valor de atributo (calculado) o lanzar una excepción :exc:" +"`AttributeError`." #: ../Doc/reference/datamodel.rst:1534 msgid "" @@ -2083,6 +2655,16 @@ msgid "" "object). See the :meth:`__getattribute__` method below for a way to " "actually get total control over attribute access." msgstr "" +"Tome en cuenta que si el atributo es encontrado a través del mecanismo " +"normal, :meth:`__getattr__` no es llamado. (Esto es una desigualdad " +"intencional entre :meth:`__getattr__` y :meth:`__setattr__`.) Esto es " +"realizado tanto por motivos de eficiencia y porque de otra manera :meth:" +"`__getattr__` no tendría manera de acceder a otros atributos de la " +"instancia. Tome en cuenta que al menos para variables de instancia, se puede " +"fingir control total al no insertar ningún valor en el diccionario de " +"atributo de instancia (sino insertándolos en otro objeto). Ver el método :" +"meth:`__getattribute__` a continuación para una forma de tener control total " +"sobre el acceso de atributo." #: ../Doc/reference/datamodel.rst:1547 msgid "" @@ -2095,6 +2677,15 @@ msgid "" "base class method with the same name to access any attributes it needs, for " "example, ``object.__getattribute__(self, name)``." msgstr "" +"Es llamado incondicionalmente para implementar acceso de atributo por " +"instancias de clase. Si la clase también define :meth:`__getattr__`, éste no " +"será llamado a menos que :meth:`__getattribute__` lo llame de manera " +"explícita o lance una excepción :exc:`AttributeError`. Este método deberá " +"retornar el valor de atributo (calculado) o lanzar una excepción :exc:" +"`AttributeError`. Para evitar la recursividad infinita en este método, su " +"implementación deberá siempre llamar al método de la clase base con el mismo " +"nombre para acceder cualquier atributo que necesite, por ejemplo, ``object." +"__getattribute__(self, name)``." #: ../Doc/reference/datamodel.rst:1558 msgid "" @@ -2102,18 +2693,26 @@ msgid "" "result of implicit invocation via language syntax or built-in functions. " "See :ref:`special-lookup`." msgstr "" +"Este método aún puede ser sobrepasado cuando se buscan métodos especiales " +"como resultado de una invocación implícita a través de sintaxis de lenguaje " +"o funciones implícitas. Ver :ref:`special-lookup`." #: ../Doc/reference/datamodel.rst:1562 msgid "" "Raises an :ref:`auditing event ` ``object.__getattr__`` with " "arguments ``obj``, ``name``." msgstr "" +"Lanza un :ref:`evento de auditoría ` ``object.__getattr__`` con " +"argumentos ``obj``, ``name``." #: ../Doc/reference/datamodel.rst:1564 msgid "" "For certain sensitive attribute accesses, raises an :ref:`auditing event " "` ``object.__getattr__`` with arguments ``obj`` and ``name``." msgstr "" +"Para ciertos accesos a atributos sensibles, lanza un :ref:`evento de " +"auditoría ` ``object.__getattr__`` con los argumentos ``obj`` y " +"``name``." #: ../Doc/reference/datamodel.rst:1571 msgid "" @@ -2121,6 +2720,10 @@ msgid "" "the normal mechanism (i.e. store the value in the instance dictionary). " "*name* is the attribute name, *value* is the value to be assigned to it." msgstr "" +"Es llamado cuando se intenta la asignación de atributos. Éste es llamado en " +"lugar del mecanismo normal (p. ej. guardar el valor en el diccionario de " +"instancias). *name* es el nombre de atributo, *value* es el valor que se le " +"asigna." #: ../Doc/reference/datamodel.rst:1575 msgid "" @@ -2128,12 +2731,17 @@ msgid "" "call the base class method with the same name, for example, ``object." "__setattr__(self, name, value)``." msgstr "" +"Si :meth:`__setattr__` quiere asignar a un atributo de instancia, debe " +"llamar al método de la clase base con el mismo nombre, por ejemplo, ``object." +"__setattr__(self, name, value)``." #: ../Doc/reference/datamodel.rst:1579 msgid "" "Raises an :ref:`auditing event ` ``object.__setattr__`` with " "arguments ``obj``, ``name``, ``value``." msgstr "" +"Lanza un :ref:`evento de auditoría ` ``object.__setattr__`` con " +"argumentos ``obj``, ``name``, ``value``." #: ../Doc/reference/datamodel.rst:1581 msgid "" @@ -2141,6 +2749,9 @@ msgid "" "` ``object.__setattr__`` with arguments ``obj``, ``name``, " "``value``." msgstr "" +"Para ciertas asignaciones de atributos sensibles, lanza un :ref:`evento de " +"auditoría ` ``object.__setattr__`` con argumentos ``obj``, " +"``name``, ``value``." #: ../Doc/reference/datamodel.rst:1588 msgid "" @@ -2148,28 +2759,39 @@ msgid "" "This should only be implemented if ``del obj.name`` is meaningful for the " "object." msgstr "" +"Al igual que :meth:`__setattr__` pero para borrado de atributos en lugar de " +"establecerlos. Esto solo de ser implementado si ``del obj.name`` es " +"significativo para el objeto." #: ../Doc/reference/datamodel.rst:1591 msgid "" "Raises an :ref:`auditing event ` ``object.__delattr__`` with " "arguments ``obj``, ``name``." msgstr "" +"Lanza un :ref:`evento de auditoría ` ``object.__delattr__`` con " +"argumentos ``obj``, ``name``." #: ../Doc/reference/datamodel.rst:1593 msgid "" "For certain sensitive attribute deletions, raises an :ref:`auditing event " "` ``object.__delattr__`` with arguments ``obj`` and ``name``." msgstr "" +"Para ciertas eliminaciones de atributos sensibles, lanza un :ref:`evento de " +"auditoría ` ``object.__delattr__`` con argumentos ``obj`` y " +"``name``." #: ../Doc/reference/datamodel.rst:1600 msgid "" "Called when :func:`dir` is called on the object. A sequence must be " "returned. :func:`dir` converts the returned sequence to a list and sorts it." msgstr "" +"Es llamado cuando :func:`dir` es llamado en el objeto. Una secuencia debe " +"ser retornada. :func:`dir` convierte la secuencia retornada a una lista y la " +"ordena." #: ../Doc/reference/datamodel.rst:1605 msgid "Customizing module attribute access" -msgstr "" +msgstr "Personalizando acceso a atributos de módulo" #: ../Doc/reference/datamodel.rst:1612 msgid "" @@ -2182,6 +2804,15 @@ msgid "" "``__dict__`` before raising an :exc:`AttributeError`. If found, it is called " "with the attribute name and the result is returned." msgstr "" +"Nombres especiales ``__getattr__`` y ``__dir__`` también pueden ser " +"utilizados para personalizar acceso a atributos de módulo. La función " +"``__getattr__`` a nivel del módulo debe aceptar un argumento que es el " +"nombre del atributo y retornar el valor calculado o lanzar una excepción :" +"exc:`AttributeError`. Si un atributo no es encontrado en el objeto de módulo " +"a través de una búsqueda normal, p. ej. :meth:`object.__getattribute__`, " +"entonces ``__getattr__`` es buscado en el módulo ``__dict__`` antes de " +"lanzar una excepción :exc:`AttributeError`. Si es encontrado, es llamado con " +"el nombre de atributo y el resultado es retornado." #: ../Doc/reference/datamodel.rst:1621 msgid "" @@ -2189,6 +2820,9 @@ msgid "" "of strings that represents the names accessible on module. If present, this " "function overrides the standard :func:`dir` search on a module." msgstr "" +"La función ``__dir__`` debe no aceptar argumentos y retornar una secuencia " +"de cadena de caracteres que representan los nombres accesibles en el módulo. " +"De existir, esta función anula la búsqueda estándar :func:`dir` en un módulo." #: ../Doc/reference/datamodel.rst:1625 msgid "" @@ -2196,6 +2830,10 @@ msgid "" "attributes, properties, etc.), one can set the ``__class__`` attribute of a " "module object to a subclass of :class:`types.ModuleType`. For example::" msgstr "" +"Para una personalización más precisa sobre el comportamiento del módulo " +"(estableciendo atributos, propiedades, etc.), se puede establecer el " +"atributo ``__class__`` de un objeto de módulo a una subclase de :class:" +"`types.ModuleType`. Por ejemplo::" #: ../Doc/reference/datamodel.rst:1643 msgid "" @@ -2204,26 +2842,31 @@ msgid "" "module globals (whether by code within the module, or via a reference to the " "module's globals dictionary) is unaffected." msgstr "" +"Definiendo un módulo ``__getattr__`` y estableciendo un módulo ``__class__`` " +"solo afecta búsquedas que utilizan la sintaxis de acceso a atributo -- " +"acceder directamente a las globales del módulo (ya sea por código dentro del " +"módulo, o a través de una referencia al diccionario de globales del módulo) " +"no se ve afectado." #: ../Doc/reference/datamodel.rst:1648 msgid "``__class__`` module attribute is now writable." -msgstr "" +msgstr "El atributo de módulo ``__class__`` es ahora escribible." #: ../Doc/reference/datamodel.rst:1651 msgid "``__getattr__`` and ``__dir__`` module attributes." -msgstr "" +msgstr "Atributos de módulo ``__getattr__`` y ``__dir__``." #: ../Doc/reference/datamodel.rst:1656 msgid ":pep:`562` - Module __getattr__ and __dir__" -msgstr "" +msgstr ":pep:`562` - Módulos __getattr__ y __dir__" #: ../Doc/reference/datamodel.rst:1657 msgid "Describes the ``__getattr__`` and ``__dir__`` functions on modules." -msgstr "" +msgstr "Describe las funciones ``__getattr__`` y ``__dir__`` en módulos." #: ../Doc/reference/datamodel.rst:1663 msgid "Implementing Descriptors" -msgstr "" +msgstr "Implementando Descriptores" #: ../Doc/reference/datamodel.rst:1665 msgid "" @@ -2234,6 +2877,12 @@ msgid "" "\" refers to the attribute whose name is the key of the property in the " "owner class' :attr:`~object.__dict__`." msgstr "" +"Los siguientes métodos solo aplican cuando una instancia de clase que " +"contiene el método (llamado clase *descriptora*) aparece en una clase " +"*propietaria* (el descriptor debe estar en el diccionario de clase del " +"propietario o en el diccionario de clase de alguno de sus padres). En los " +"ejemplos a continuación, “el atributo” se refiere al atributo cuyo nombre es " +"la llave de la propiedad en la clase propietaria :attr:`~object.__dict__`." #: ../Doc/reference/datamodel.rst:1675 msgid "" @@ -2243,12 +2892,19 @@ msgid "" "the attribute was accessed through, or ``None`` when the attribute is " "accessed through the *owner*." msgstr "" +"Es llamado para obtener el atributo de la clase propietaria (acceso a " +"atributos de clase) o de una instancia de dicha clase (acceso a atributos de " +"instancia). El argumento opcional *owner* es la clase propietaria, mientras " +"que *instance* es la instancia a través de la cual el atributo fue accedido, " +"o ``None`` cuando el atributo es accedido a través de *owner*." #: ../Doc/reference/datamodel.rst:1681 msgid "" "This method should return the computed attribute value or raise an :exc:" "`AttributeError` exception." msgstr "" +"Este método debe retornar el valor de atributo calculado o lanzar una " +"excepción :exc:`AttributeError`." #: ../Doc/reference/datamodel.rst:1684 msgid "" @@ -2259,12 +2915,20 @@ msgid "" "implementation always passes in both arguments whether they are required or " "not." msgstr "" +":PEP:`252` especifica que :meth:`__get__` puede ser llamado con uno o dos " +"argumentos. Los propios descriptores incorporados de Python soportan esta " +"especificación; sin embargo, es probable que algunas herramientas de " +"terceros tengan descriptores que requieran ambos argumentos. La propia " +"implementación de :meth:`__getattribute__` en Python siempre pasa ambos " +"argumentos si son requeridos o no." #: ../Doc/reference/datamodel.rst:1693 msgid "" "Called to set the attribute on an instance *instance* of the owner class to " "a new value, *value*." msgstr "" +"Es llamado para establecer el atributo en una instancia *instance* de la " +"clase propietaria a un nuevo valor *value*." #: ../Doc/reference/datamodel.rst:1696 msgid "" @@ -2272,17 +2936,24 @@ msgid "" "descriptor to a \"data descriptor\". See :ref:`descriptor-invocation` for " "more details." msgstr "" +"Nota, agregar :meth:`__set__` o :meth:`__delete__` cambia el tipo de " +"descriptor a un “descriptor de datos”. Ver :ref:`descriptor-invocation` para " +"más detalles." #: ../Doc/reference/datamodel.rst:1702 msgid "" "Called to delete the attribute on an instance *instance* of the owner class." msgstr "" +"Es llamado para borrar el atributo en una instancia *instance* de la clase " +"propietaria." #: ../Doc/reference/datamodel.rst:1707 msgid "" "Called at the time the owning class *owner* is created. The descriptor has " "been assigned to *name*." msgstr "" +"Es llamado al momento en el que se crea la clase propietaria *owner*. El " +"descriptor es asignado a *name*." #: ../Doc/reference/datamodel.rst:1712 msgid "" @@ -2290,10 +2961,14 @@ msgid "" "constructor, so it will need to be called explicitly with the appropriate " "parameters when a descriptor is added to a class after initial creation::" msgstr "" +":meth:`__set_name__` solo es llamado implícitamente como parte del " +"constructor :class:`type`, así que será necesario llamarlo explícitamente " +"con los parámetros apropiados cuando un descriptor se agrega a la clase " +"después de su creación inicial::" #: ../Doc/reference/datamodel.rst:1723 msgid "See :ref:`class-object-creation` for more details." -msgstr "" +msgstr "Ver :ref:`class-object-creation` para más detalles." #: ../Doc/reference/datamodel.rst:1727 msgid "" @@ -2305,10 +2980,17 @@ msgid "" "argument (for example, CPython sets this attribute for unbound methods that " "are implemented in C)." msgstr "" +"El atributo :attr:`__objclass__` es interpretado por el módulo :mod:" +"`inspect` como la especificación de la clase donde el objeto fue definido " +"(establecer esto adecuadamente puede ayudar en introspección de atributos " +"dinámicos de clases en tiempo de ejecución). Para llamables, puede indicar " +"que una instancia de un tipo (o subclase) dado es esperado o requerido como " +"el primero argumento posicional (por ejemplo, CPython establece este " +"atributo para métodos independientes que son implementados en C)." #: ../Doc/reference/datamodel.rst:1738 msgid "Invoking Descriptors" -msgstr "" +msgstr "Invocando Descriptores" #: ../Doc/reference/datamodel.rst:1740 msgid "" @@ -2317,6 +2999,11 @@ msgid "" "protocol: :meth:`__get__`, :meth:`__set__`, and :meth:`__delete__`. If any " "of those methods are defined for an object, it is said to be a descriptor." msgstr "" +"De manera general, un descriptor es un atributo de objeto con " +"“comportamiento enlazado”, cuyo atributo de acceso ha sido anulado por " +"métodos en el protocolo del descriptor: :meth:`__get__`, :meth:`__set__`, y :" +"meth:`__delete__`. Si cualquiera de esos métodos son definidos por un " +"objeto, se dice que es un descriptor." #: ../Doc/reference/datamodel.rst:1745 msgid "" @@ -2325,6 +3012,11 @@ msgid "" "chain starting with ``a.__dict__['x']``, then ``type(a).__dict__['x']``, and " "continuing through the base classes of ``type(a)`` excluding metaclasses." msgstr "" +"El comportamiento por defecto para atributos de acceso es obtener (*get*), " +"establecer (*set*) o borrar (*delete*) el atributo del diccionario del " +"objeto. Por ejemplo, ``a.x`` tiene una cadena de búsqueda que comienza con " +"``a.__dict__[‘x’]``, luego ``type(a).__dict__[‘x’]``, y continúa por las " +"clases base de ``type(a)`` excluyendo metaclases." #: ../Doc/reference/datamodel.rst:1750 msgid "" @@ -2333,46 +3025,59 @@ msgid "" "descriptor method instead. Where this occurs in the precedence chain " "depends on which descriptor methods were defined and how they were called." msgstr "" +"Sin embargo, si el valor buscado es un objeto definiendo uno de los métodos " +"del descriptor, entonces Python puede anular el comportamiento por defecto e " +"invocar al método del descriptor en su lugar. Dónde ocurre esto en la cadena " +"de precedencia depende de qué métodos de descriptor fueron definidos y cómo " +"son llamados." #: ../Doc/reference/datamodel.rst:1755 msgid "" "The starting point for descriptor invocation is a binding, ``a.x``. How the " "arguments are assembled depends on ``a``:" msgstr "" +"El punto de inicio por invocación de descriptor es un enlace ``a.x``. Cómo " +"los argumentos son ensamblados dependen de ``a``:" #: ../Doc/reference/datamodel.rst:1760 msgid "Direct Call" -msgstr "" +msgstr "Llamado Directo" #: ../Doc/reference/datamodel.rst:1759 msgid "" "The simplest and least common call is when user code directly invokes a " "descriptor method: ``x.__get__(a)``." msgstr "" +"El llamado más simple y menos común es cuando el código de usuario invoca " +"directamente un método descriptor: ``x.__get__(a)``." #: ../Doc/reference/datamodel.rst:1764 msgid "Instance Binding" -msgstr "" +msgstr "Enlace de Instancia" #: ../Doc/reference/datamodel.rst:1763 msgid "" "If binding to an object instance, ``a.x`` is transformed into the call: " "``type(a).__dict__['x'].__get__(a, type(a))``." msgstr "" +"Al enlazar a una instancia de objeto, ``a`` es transformado en un llamado: " +"``type(a).__dict__[‘x’].__get__(a, type(a))``." #: ../Doc/reference/datamodel.rst:1768 msgid "Class Binding" -msgstr "" +msgstr "Enlace de Clase" #: ../Doc/reference/datamodel.rst:1767 msgid "" "If binding to a class, ``A.x`` is transformed into the call: ``A." "__dict__['x'].__get__(None, A)``." msgstr "" +"Al enlazar a una clase, ``A.x`` es transformado en un llamado: ``A." +"__dict__[‘x’].__get__(None, A)``." #: ../Doc/reference/datamodel.rst:1774 msgid "Super Binding" -msgstr "" +msgstr "Súper Enlace" #: ../Doc/reference/datamodel.rst:1771 msgid "" @@ -2381,6 +3086,10 @@ msgid "" "immediately preceding ``B`` and then invokes the descriptor with the call: " "``A.__dict__['m'].__get__(obj, obj.__class__)``." msgstr "" +"Si ``a`` es una instancia de :class:`super`, entonces el enlace ``super(B, " +"obj).m()`` busca ``obj.__class__.__mro__`` la clase base ``A`` que precede " +"inmediatamente ``B`` y luego invoca al descriptor con el llamado: ``A." +"__dict__[‘m’].__get__(obj, obj.__class__)``." #: ../Doc/reference/datamodel.rst:1776 msgid "" @@ -2398,6 +3107,20 @@ msgid "" "instance dictionary. In contrast, non-data descriptors can be overridden by " "instances." msgstr "" +"Para enlace de instancias, la precedencia de la invocación de descriptor " +"depende de qué métodos de descriptor son definidos. Un descriptor puede " +"definir cualquier combinación de :meth:`__get__`, :meth:`__set__` y :meth:" +"`__delete__`. Si no define :meth:`__get__`, entonces el acceso al atributo " +"retornará el objeto de descriptor a menos que exista un valor en el " +"diccionario de instancias del objeto. Si el descriptor define :meth:" +"`__set__` y/o :meth:`__delete__`, es un descriptor de datos; si no define " +"alguno, es un descriptor sin datos. Normalmente los descriptores de datos " +"definen ambos :meth:`__get__` y :meth:`__set__`, mientras que los " +"descriptores sin datos solo tienen el método :meth:`__get__`. Descriptores " +"de datos con :meth:`__set__` y :meth:`__get__` (o :meth:`__delete__`) " +"definidos siempre anulan una re-definición en el diccionario de instancias. " +"Por el contrario, los descriptores sin datos pueden ser anulados por " +"instancias." #: ../Doc/reference/datamodel.rst:1789 msgid "" @@ -2406,16 +3129,23 @@ msgid "" "and override methods. This allows individual instances to acquire behaviors " "that differ from other instances of the same class." msgstr "" +"Métodos de Python (que incluyen :func:`staticmethod` y :func:`classmethod`) " +"son implementados como descriptores sin datos. Por consiguiente, las " +"instancias pueden redefinir y anular métodos. Esto permite que instancias " +"individuales adquieran comportamientos que pueden diferir de otras " +"instancias de la misma clase." #: ../Doc/reference/datamodel.rst:1794 msgid "" "The :func:`property` function is implemented as a data descriptor. " "Accordingly, instances cannot override the behavior of a property." msgstr "" +"La función :func:`property` es implementada como un descriptor de datos. Por " +"lo tanto, las instancias no pueden anular el comportamiento de una propiedad." #: ../Doc/reference/datamodel.rst:1801 msgid "__slots__" -msgstr "" +msgstr "__slots__" #: ../Doc/reference/datamodel.rst:1803 msgid "" @@ -2423,12 +3153,18 @@ msgid "" "and deny the creation of *__dict__* and *__weakref__* (unless explicitly " "declared in *__slots__* or available in a parent.)" msgstr "" +"*__slots__* nos permiten declarar de manera explícita miembros de datos " +"(como propiedades) y negar la creación de *__dict__* y *__weakref__* (a " +"menos que se declare explícitamente en *__slots__* o se encuentre disponible " +"en un elemento padre.)" #: ../Doc/reference/datamodel.rst:1807 msgid "" "The space saved over using *__dict__* can be significant. Attribute lookup " "speed can be significantly improved as well." msgstr "" +"El espacio ganado al usar *__dict__* puede ser importante. La velocidad de " +"búsqueda de atributos también puede mejorar significativamente." #: ../Doc/reference/datamodel.rst:1812 msgid "" @@ -2437,16 +3173,23 @@ msgid "" "for the declared variables and prevents the automatic creation of *__dict__* " "and *__weakref__* for each instance." msgstr "" +"Esta variable de clase se le puede asignar una cadena de caracteres, un " +"elemento iterable o una secuencia de cadena de caracteres con nombres de " +"variables utilizados por instancias. *__slots__* reserva espacio para las " +"variables declaradas y previene la creación automática de *__dict__* y " +"*__weakref__* para cada instancia." #: ../Doc/reference/datamodel.rst:1819 msgid "Notes on using *__slots__*" -msgstr "" +msgstr "Notas sobre el uso de *__slots__*" #: ../Doc/reference/datamodel.rst:1821 msgid "" "When inheriting from a class without *__slots__*, the *__dict__* and " "*__weakref__* attribute of the instances will always be accessible." msgstr "" +"Cuando se hereda de una clase sin *__slots__*, los atributos *__dict__* y " +"*__weakref__* de las instancias siempre serán accesibles." #: ../Doc/reference/datamodel.rst:1824 msgid "" @@ -2456,6 +3199,12 @@ msgid "" "variables is desired, then add ``'__dict__'`` to the sequence of strings in " "the *__slots__* declaration." msgstr "" +"Sin una variable *__dict__*, no se puede asignar a instancias nuevas " +"variables que no se encuentren listadas en la definición de *__slots__*. " +"Intentos de asignación a una variable no listada lanza una excepción :exc:" +"`AttributeError`. Si se desea hacer una asignación dinámica a variables " +"nuevas, se debe agregar ``’__dict__’`` a la secuencia de cadena de " +"caracteres en la declaración de *__slots__*." #: ../Doc/reference/datamodel.rst:1830 msgid "" @@ -2464,6 +3213,11 @@ msgid "" "reference support is needed, then add ``'__weakref__'`` to the sequence of " "strings in the *__slots__* declaration." msgstr "" +"Sin una variable *__weakref__* por cada instancia, las clases que definen " +"*__slots__* no soportan “referencias débiles” (*weak references*) a sus " +"instancias. Si se desea el soporte de dichas referencias, se debe agregar " +"``’__weakref__’`` a la secuencia de cadena de caracteres en la declaración " +"de *__slots__*." #: ../Doc/reference/datamodel.rst:1835 msgid "" @@ -2472,6 +3226,11 @@ msgid "" "be used to set default values for instance variables defined by *__slots__*; " "otherwise, the class attribute would overwrite the descriptor assignment." msgstr "" +"*__slots__* son implementados a nivel de clase al crear descriptores (:ref:" +"`descriptors`) para cada nombre de variable. Como resultado, los atributos " +"de clase no pueden ser utilizados para establecer valores por defecto a " +"variables de instancia definidos por *__slots__*; de lo contrario, el " +"atributo de clase sobrescribirá la asignación del descriptor." #: ../Doc/reference/datamodel.rst:1841 msgid "" @@ -2481,6 +3240,11 @@ msgid "" "they also define *__slots__* (which should only contain names of any " "*additional* slots)." msgstr "" +"La acción de una declaración *__slots__* no está limitada a la clase donde " +"fue definida. *__slots__* declarado en padres, se vuelven disponibles en " +"clases hijas. Sin embargo, subclases hijas tendrán un *__dict__* y " +"*__weakref__* a menos que también se defina *__slots__* (el cual solo debe " +"contener nombres de espacios o *slots* *adicionales*)." #: ../Doc/reference/datamodel.rst:1847 msgid "" @@ -2490,12 +3254,20 @@ msgid "" "meaning of the program undefined. In the future, a check may be added to " "prevent this." msgstr "" +"Si una clase define un espacio (*slot*) también definido en una clase base, " +"la variable de instancia definida por el espacio de la clase base es " +"inaccesible (excepto al obtener su descriptor directamente de la clase " +"base). Esto hace que el significado del programa sea indefinido. En el " +"futuro se podría agregar una verificación para prevenir esto." #: ../Doc/reference/datamodel.rst:1852 msgid "" "Nonempty *__slots__* does not work for classes derived from \"variable-length" "\" built-in types such as :class:`int`, :class:`bytes` and :class:`tuple`." msgstr "" +"*__slots__* no vacíos no funcionan para clases derivadas de tipos " +"incorporados de “longitud variable” como :class:`int`, :class:`bytes` y :" +"class:`tuple`." #: ../Doc/reference/datamodel.rst:1855 msgid "" @@ -2503,11 +3275,17 @@ msgid "" "used; however, in the future, special meaning may be assigned to the values " "corresponding to each key." msgstr "" +"Cualquier iterable sin cadena de caracteres puede ser asignado a " +"*__slots__*. Mapeos también pueden ser utilizados; sin embargo, en el " +"futuro, un significado especial puede ser asignado a los valores " +"correspondientes para cada llave." #: ../Doc/reference/datamodel.rst:1859 msgid "" "*__class__* assignment works only if both classes have the same *__slots__*." msgstr "" +"La asignación *__class__* funciona solo si ambas clases tienen el mismo " +"*__slots__*." #: ../Doc/reference/datamodel.rst:1861 msgid "" @@ -2515,6 +3293,10 @@ msgid "" "only one parent is allowed to have attributes created by slots (the other " "bases must have empty slot layouts) - violations raise :exc:`TypeError`." msgstr "" +"Herencia múltiple con múltiples clases de padres con espacios (*slots*) " +"puede ser utilizada, pero solo un padre es permitido que tenga atributos " +"creados por espacios (las otras bases deben tener diseños de espacios " +"vacíos) - violaciones lanzan una excepción :exc:`TypeError`." #: ../Doc/reference/datamodel.rst:1866 msgid "" @@ -2522,10 +3304,13 @@ msgid "" "of the iterator's values. However, the *__slots__* attribute will be an " "empty iterator." msgstr "" +"Si un iterados es utilizado por *__slots__*, entonces un descriptor es " +"creado para cada uno de los valores del iterador. Sin embargo, el atributo " +"*__slots__* será un iterador vacío." #: ../Doc/reference/datamodel.rst:1873 msgid "Customizing class creation" -msgstr "" +msgstr "Personalización de creación de clases" #: ../Doc/reference/datamodel.rst:1875 msgid "" @@ -2536,6 +3321,12 @@ msgid "" "``__init_subclass__`` solely applies to future subclasses of the class " "defining the method." msgstr "" +"Siempre que una clase hereda de otra clase, *__init_subclass__* es llamado " +"en esa clase. De esta manera, es posible escribir clases que cambian el " +"comportamiento de las subclases. Esto está estrechamente relacionado con los " +"decoradores de clase, pero solo donde los decoradores de clase afectan a la " +"clase específica a la que son aplicados, ``__init_subclass__`` solo aplica a " +"futuras subclases de la clase que define el método." #: ../Doc/reference/datamodel.rst:1884 msgid "" @@ -2543,6 +3334,10 @@ msgid "" "then the new subclass. If defined as a normal instance method, this method " "is implicitly converted to a class method." msgstr "" +"Este método es llamado siempre que la clase que lo contiene sea heredada. " +"*cls* es entonces, la nueva subclase. Si se define como un método de " +"instancia normal, éste es convertido de manera implícita a un método de " +"clase." #: ../Doc/reference/datamodel.rst:1888 msgid "" @@ -2551,12 +3346,19 @@ msgid "" "``__init_subclass__``, one should take out the needed keyword arguments and " "pass the others over to the base class, as in::" msgstr "" +"Los argumentos de palabra clave que fueron dados a una nueva clase, son " +"pasados a la clase ``__init_subclass__`` del padre. Por temas de " +"compatibilidad con otras clases que usan ``__init_subclass__``, uno debería " +"quitar los argumentos de palabra clave y pasar los otros a la clase base, " +"como en::" #: ../Doc/reference/datamodel.rst:1902 msgid "" "The default implementation ``object.__init_subclass__`` does nothing, but " "raises an error if it is called with any arguments." msgstr "" +"La implementación por defecto ``object.__init_subclass__`` no hace nada, " +"pero lanza un error si es llamado con cualquier argumento." #: ../Doc/reference/datamodel.rst:1907 msgid "" @@ -2565,10 +3367,14 @@ msgid "" "actual metaclass (rather than the explicit hint) can be accessed as " "``type(cls)``." msgstr "" +"La sugerencia de metaclase ``metaclass`` es consumido por el resto de la " +"maquinaria de tipos, y nunca se pasa a las implementaciones " +"``__init_subclass__``. La clase meta actual (más que la sugerencia " +"explícita) puede ser accedida como ``type(cls)``." #: ../Doc/reference/datamodel.rst:1918 msgid "Metaclasses" -msgstr "" +msgstr "Metaclases" #: ../Doc/reference/datamodel.rst:1925 msgid "" @@ -2576,6 +3382,9 @@ msgid "" "executed in a new namespace and the class name is bound locally to the " "result of ``type(name, bases, namespace)``." msgstr "" +"Por defecto, las clases son construidas usando :func:`type`. El cuerpo de la " +"clase es ejecutado en un nuevo espacio de nombres y el nombre de la clase es " +"ligado de forma local al resultado de ``type(name, bases, namespace)``." #: ../Doc/reference/datamodel.rst:1929 msgid "" @@ -2584,40 +3393,48 @@ msgid "" "existing class that included such an argument. In the following example, " "both ``MyClass`` and ``MySubclass`` are instances of ``Meta``::" msgstr "" +"El proceso de creación de clase puede ser personalizado pasando el argumento " +"de palabra clave ``metaclass`` en la línea de definición de la clase, o al " +"heredar de una clase existente que incluya dicho argumento. En el siguiente " +"ejemplo, ambos ``MyClass`` y ``MySubclass`` son instancias de ``Meta``::" #: ../Doc/reference/datamodel.rst:1943 msgid "" "Any other keyword arguments that are specified in the class definition are " "passed through to all metaclass operations described below." msgstr "" +"Cualquier otro argumento de palabra clave que sea especificado en la " +"definición de clase es pasado mediante todas las operaciones de metaclase " +"descritas a continuación." #: ../Doc/reference/datamodel.rst:1946 msgid "When a class definition is executed, the following steps occur:" msgstr "" +"Cuando una definición de clase es ejecutada, los siguientes pasos ocurren:" #: ../Doc/reference/datamodel.rst:1948 msgid "MRO entries are resolved;" -msgstr "" +msgstr "Entradas de la Orden de Resolución de Método (MRU) son resueltas;" #: ../Doc/reference/datamodel.rst:1949 msgid "the appropriate metaclass is determined;" -msgstr "" +msgstr "se determina la metaclase adecuada;" #: ../Doc/reference/datamodel.rst:1950 msgid "the class namespace is prepared;" -msgstr "" +msgstr "se prepara el espacio de nombres de clase;" #: ../Doc/reference/datamodel.rst:1951 msgid "the class body is executed;" -msgstr "" +msgstr "se ejecuta el cuerpo de la clase;" #: ../Doc/reference/datamodel.rst:1952 msgid "the class object is created." -msgstr "" +msgstr "se crea el objeto de clase." #: ../Doc/reference/datamodel.rst:1956 msgid "Resolving MRO entries" -msgstr "" +msgstr "Resolviendo entradas de la Orden de Resolución de Métodos (MRU)" #: ../Doc/reference/datamodel.rst:1958 msgid "" @@ -2627,36 +3444,50 @@ msgid "" "classes that will be used instead of this base. The tuple may be empty, in " "such case the original base is ignored." msgstr "" +"Si una base que aparece en la definición de una clase no es una instancia " +"de :class:`type`, entonces el método ``__mro_entries__`` se busca en ella. " +"Si es encontrado, se llama con la tupla de bases originales. Este método " +"debe retornar una tupla de clases que será utilizado en lugar de esta base. " +"La tupla puede estar vacía, en cuyo caso la base original es ignorada." #: ../Doc/reference/datamodel.rst:1966 ../Doc/reference/datamodel.rst:2156 msgid ":pep:`560` - Core support for typing module and generic types" msgstr "" +":pep:`560` - Soporte central para módulos de clasificación y tipos genéricos" #: ../Doc/reference/datamodel.rst:1970 msgid "Determining the appropriate metaclass" -msgstr "" +msgstr "Determinando la metaclase adecuada" #: ../Doc/reference/datamodel.rst:1974 msgid "" "The appropriate metaclass for a class definition is determined as follows:" msgstr "" +"La metaclase adecuada para la definición de una clase es determinada de la " +"siguiente manera:" #: ../Doc/reference/datamodel.rst:1976 msgid "" "if no bases and no explicit metaclass are given, then :func:`type` is used;" msgstr "" +"si no se dan bases ni metaclases explícitas, entonces se utiliza :func:" +"`type`;" #: ../Doc/reference/datamodel.rst:1977 msgid "" "if an explicit metaclass is given and it is *not* an instance of :func:" "`type`, then it is used directly as the metaclass;" msgstr "" +"si se da una metaclase explícita y *no* es una instancia de :func:`type`, " +"entonces se utiliza directamente como la metaclase;" #: ../Doc/reference/datamodel.rst:1979 msgid "" "if an instance of :func:`type` is given as the explicit metaclass, or bases " "are defined, then the most derived metaclass is used." msgstr "" +"si se da una instancia de :func:`type` como la metaclase explícita, o se " +"definen bases, entonces se utiliza la metaclase más derivada." #: ../Doc/reference/datamodel.rst:1982 msgid "" @@ -2666,10 +3497,13 @@ msgid "" "of these candidate metaclasses. If none of the candidate metaclasses meets " "that criterion, then the class definition will fail with ``TypeError``." msgstr "" +"La metaclase más derivada es elegida de la metaclase especificada " +"explícitamente (si existe) y de la metaclase (p. ej. ``type(cls)``) de todas " +"las clases base especificadas." #: ../Doc/reference/datamodel.rst:1992 msgid "Preparing the class namespace" -msgstr "" +msgstr "Preparando el espacio de nombres de la clase" #: ../Doc/reference/datamodel.rst:1997 msgid "" @@ -2682,24 +3516,34 @@ msgid "" "the final class object is created the namespace is copied into a new " "``dict``." msgstr "" +"Una vez que se ha identificado la metaclase apropiada, entonces se prepara " +"el espacio de nombres de la clase. Si la metaclase tiene un atributo " +"``__prepare__``, es llamado como ``namespace = metaclass.__prepare__(name, " +"bases, **kwds)`` (donde los argumentos de palabra clave adicionales, de " +"existir, provienen de la definición de la clase). El método ``__prepare__`` " +"debe ser implementado como :func:`classmethod`. El espacio de nombres " +"retornado por ``__prepare__`` es pasado a ``__new__``, pero cuando el objeto " +"de clase final es creado, el espacio de nombres es copiado en un ``dict``." #: ../Doc/reference/datamodel.rst:2005 msgid "" "If the metaclass has no ``__prepare__`` attribute, then the class namespace " "is initialised as an empty ordered mapping." msgstr "" +"Si la metaclase no tiene atributo ``__prepare__``, entonces el espacio de " +"nombres de clase es iniciado como un mapeo vacío ordenado." #: ../Doc/reference/datamodel.rst:2010 msgid ":pep:`3115` - Metaclasses in Python 3000" -msgstr "" +msgstr ":pep:`3115` - Metaclases en Python 3000" #: ../Doc/reference/datamodel.rst:2011 msgid "Introduced the ``__prepare__`` namespace hook" -msgstr "" +msgstr "Introduce el enlace de espacio de nombres ``__prepare__``" #: ../Doc/reference/datamodel.rst:2015 msgid "Executing the class body" -msgstr "" +msgstr "Ejecutando el cuerpo de la clase" #: ../Doc/reference/datamodel.rst:2020 msgid "" @@ -2709,6 +3553,11 @@ msgid "" "names from the current and outer scopes when the class definition occurs " "inside a function." msgstr "" +"El cuerpo de la clase es ejecutado como ``exec(body, globals(), namespace)`` " +"(aproximadamente). La diferencia clave con un llamado normal a :func:`exec` " +"es que el alcance léxico permite que el cuerpo de la clase (incluyendo " +"cualquier método) haga referencia a nombres de los alcances actuales y " +"externos cuando la definición de clase sucede dentro de la función." #: ../Doc/reference/datamodel.rst:2026 msgid "" @@ -2718,10 +3567,16 @@ msgid "" "class methods, or through the implicit lexically scoped ``__class__`` " "reference described in the next section." msgstr "" +"Sin embargo, aún cuando la definición de clase sucede dentro de la función, " +"los métodos definidos dentro de la clase aún no pueden ver nombres definidos " +"dentro del alcance de la clase. Variables de clase deben ser accedidas a " +"través del primer parámetro de instancia o métodos de clase, o a través de " +"la referencia al léxico implícito ``__class__`` descrita en la siguiente " +"sección." #: ../Doc/reference/datamodel.rst:2035 msgid "Creating the class object" -msgstr "" +msgstr "Creando el objeto de clase" #: ../Doc/reference/datamodel.rst:2042 msgid "" @@ -2730,6 +3585,10 @@ msgid "" "**kwds)`` (the additional keywords passed here are the same as those passed " "to ``__prepare__``)." msgstr "" +"Una vez que el espacio de nombres de la clase ha sido poblado al ejecutar el " +"cuerpo de la clase, el objeto de clase es creado al llamar ``metaclass(name, " +"bases, namespace, **kwds)`` (las palabras clave adicionales que se pasan " +"aquí, son las mismas que aquellas pasadas en ``__prepare__``)." #: ../Doc/reference/datamodel.rst:2047 msgid "" @@ -2741,6 +3600,14 @@ msgid "" "scoping, while the class or instance that was used to make the current call " "is identified based on the first argument passed to the method." msgstr "" +"Este objeto de clase es el que será referenciado por la forma sin argumentos " +"de :func:`super`. ``__class__`` es una referencia de cierre implícita creada " +"por el compilador si cualquier método en el cuerpo de una clase se refiere " +"tanto a ``__class__`` o ``super``. Esto permite que la forma sin argumentos " +"de :func:`super` identifique correctamente la clase definida en base al " +"alcance léxico, mientras la clase o instancia que fue utilizada para hacer " +"el llamado actual es identificado en base al primer argumento que se pasa al " +"método." #: ../Doc/reference/datamodel.rst:2057 msgid "" @@ -2750,6 +3617,11 @@ msgid "" "initialised correctly. Failing to do so will result in a :exc:`RuntimeError` " "in Python 3.8." msgstr "" +"En CPython 3.6 y posterior, la celda ``__class__`` se pasa a la metaclase " +"como una entrada ``__classcell__`` en el espacio de nombres de la clase. En " +"caso de existir, esto debe ser propagado hacia el llamado ``type.__new__`` " +"para que la clase se inicie correctamente. No hacerlo resultará en un error :" +"exc:`RuntimeError` en Python 3.8." #: ../Doc/reference/datamodel.rst:2063 msgid "" @@ -2757,24 +3629,33 @@ msgid "" "ultimately calls ``type.__new__``, the following additional customisation " "steps are invoked after creating the class object:" msgstr "" +"Cuando se utiliza la metaclase por defecto :class:`type`, o cualquier otra " +"metaclase que finalmente llama a ``type.__new__``, los siguientes pasos de " +"personalización adicional son invocados después de crear el objeto de clase:" #: ../Doc/reference/datamodel.rst:2067 msgid "" "first, ``type.__new__`` collects all of the descriptors in the class " "namespace that define a :meth:`~object.__set_name__` method;" msgstr "" +"primero, ``type.__new__`` recolecta todos los descriptores en el espacio de " +"nombres de la clase que definen un método :meth:`~object.__set_name__`;" #: ../Doc/reference/datamodel.rst:2069 msgid "" "second, all of these ``__set_name__`` methods are called with the class " "being defined and the assigned name of that particular descriptor;" msgstr "" +"segundo, todos esos métodos ``__set_name__`` son llamados con la clase " +"definida y el nombre de un descriptor particular asignado;" #: ../Doc/reference/datamodel.rst:2071 msgid "" "finally, the :meth:`~object.__init_subclass__` hook is called on the " "immediate parent of the new class in its method resolution order." msgstr "" +"finalmente, el enlace :meth:`~object.__init_subclass__` llama al padre " +"inmediato de la nueva clase en su orden de resolución del método." #: ../Doc/reference/datamodel.rst:2074 msgid "" @@ -2782,6 +3663,9 @@ msgid "" "included in the class definition (if any) and the resulting object is bound " "in the local namespace as the defined class." msgstr "" +"Después de que el objeto de clase es creado, se pasa al decorador de clase " +"incluido en su definición (si existe) y el objeto resultante es enlazado en " +"el espacio de nombres local como la clase definida." #: ../Doc/reference/datamodel.rst:2078 msgid "" @@ -2790,18 +3674,23 @@ msgid "" "object is discarded. The new copy is wrapped in a read-only proxy, which " "becomes the :attr:`~object.__dict__` attribute of the class object." msgstr "" +"Cuando una nueva clase es creada por ``type.__new__``, el objeto " +"proporcionado como el parámetro de espacio de nombres es copiado a un " +"trazado ordenado y el objeto original es descartado. La nueva copia es " +"*envuelta* en un proxy de solo lectura, que se convierte en el atributo :" +"attr:`~object.__dict__` del objeto de clase." #: ../Doc/reference/datamodel.rst:2085 msgid ":pep:`3135` - New super" -msgstr "" +msgstr ":pep:`3135` - Nuevo súper" #: ../Doc/reference/datamodel.rst:2086 msgid "Describes the implicit ``__class__`` closure reference" -msgstr "" +msgstr "Describe la referencia de cierre implícita ``__class__``" #: ../Doc/reference/datamodel.rst:2090 msgid "Uses for metaclasses" -msgstr "" +msgstr "Usos para metaclases" #: ../Doc/reference/datamodel.rst:2092 msgid "" @@ -2810,16 +3699,23 @@ msgid "" "automatic property creation, proxies, frameworks, and automatic resource " "locking/synchronization." msgstr "" +"Los usos potenciales para metaclases son ilimitados. Algunas ideas que ya " +"han sido exploradas incluyen enumeración, registros, revisión de interface, " +"delegación automática, creación de propiedades automática, proxy, " +"infraestructuras, y bloqueo/sincronización automática de recursos." #: ../Doc/reference/datamodel.rst:2099 msgid "Customizing instance and subclass checks" -msgstr "" +msgstr "Personalizando revisiones de instancia y subclase" #: ../Doc/reference/datamodel.rst:2101 msgid "" "The following methods are used to override the default behavior of the :func:" "`isinstance` and :func:`issubclass` built-in functions." msgstr "" +"Los siguientes métodos son utilizados para anular el comportamiento por " +"defecto de las funciones incorporadas :func:`isinstance` y :func:" +"`issubclass`." #: ../Doc/reference/datamodel.rst:2104 msgid "" @@ -2828,6 +3724,10 @@ msgid "" "base classes\" to any class or type (including built-in types), including " "other ABCs." msgstr "" +"En particular, la metaclase :class:`abc.ABCMeta` implementa estos métodos " +"para permitir la adición de Clases Base Abstractas (ABCs, por su nombre en " +"inglés *Abstract Base Clases*) como “clases base virtuales” a cualquier " +"clase o tipo (incluyendo tipos incorporados), incluyendo otros ABCs." #: ../Doc/reference/datamodel.rst:2111 msgid "" @@ -2835,6 +3735,9 @@ msgid "" "instance of *class*. If defined, called to implement ``isinstance(instance, " "class)``." msgstr "" +"Retorna *true* si la instancia *instance* debe ser considerada una instancia " +"(directa o indirecta) de clase *class*. De ser definida, es llamado para " +"implementar ``isinstance(instance, class)``." #: ../Doc/reference/datamodel.rst:2118 msgid "" @@ -2842,6 +3745,9 @@ msgid "" "subclass of *class*. If defined, called to implement ``issubclass(subclass, " "class)``." msgstr "" +"Retorna *true* si la subclase *subclass* debe ser considerada una subclase " +"(directa o indirecta) de clase *class*. De ser definida, es llamado para " +"implementar ``issubclass(subclass, class)``." #: ../Doc/reference/datamodel.rst:2123 msgid "" @@ -2850,10 +3756,15 @@ msgid "" "consistent with the lookup of special methods that are called on instances, " "only in this case the instance is itself a class." msgstr "" +"Tome en cuenta que estos métodos son buscados en el tipo (metaclase) de una " +"clase. No pueden ser definidos como métodos de clase en la clase actual. " +"Esto es consistente con la búsqueda de métodos especiales que son llamados " +"en instancias, solo en este caso la instancia es por sí misma una clase." #: ../Doc/reference/datamodel.rst:2134 msgid ":pep:`3119` - Introducing Abstract Base Classes" msgstr "" +":pep:`3119` - Introducción a Clases Base Abstractas (*Abstract Base Classes*)" #: ../Doc/reference/datamodel.rst:2131 msgid "" @@ -2863,22 +3774,31 @@ msgid "" "context of adding Abstract Base Classes (see the :mod:`abc` module) to the " "language." msgstr "" +"Incluye la especificación para personalizar el comportamiento de :func:" +"`isinstance` y :func:`issubclass` a través de :meth:`~class." +"__instancecheck__` y :meth:`~class.__subclasscheck__`, con motivación para " +"esta funcionalidad en el contexto de agregar Clases Base Abstractas (ver el " +"módulo :mod:`abc`) al lenguaje." #: ../Doc/reference/datamodel.rst:2139 msgid "Emulating generic types" -msgstr "" +msgstr "Emulando tipos genéricos" #: ../Doc/reference/datamodel.rst:2141 msgid "" "One can implement the generic class syntax as specified by :pep:`484` (for " "example ``List[int]``) by defining a special method:" msgstr "" +"Uno puede implementar la sintaxis de clase genérica como lo especifica :pep:" +"`484` (por ejemplo ``List[int]``) definiendo un método especial:" #: ../Doc/reference/datamodel.rst:2146 msgid "" "Return an object representing the specialization of a generic class by type " "arguments found in *key*." msgstr "" +"Retornar un objeto representando la especialización de una clase genérica " +"por argumentos de tipo encontrados en *key*." #: ../Doc/reference/datamodel.rst:2149 msgid "" @@ -2887,10 +3807,14 @@ msgid "" "is primarily reserved for use with static type hints, other usage is " "discouraged." msgstr "" +"Este método es buscado en el objeto de clase mismo, y cuando es definido en " +"el cuerpo de la clase, este método es un método de clase implícito. Tome en " +"cuenta que este mecanismo es ante todo reservado para su uso con sugerencias " +"de tipo (*type hints*), no se aconseja otro uso." #: ../Doc/reference/datamodel.rst:2162 msgid "Emulating callable objects" -msgstr "" +msgstr "Emulando objetos que se pueden llamar" #: ../Doc/reference/datamodel.rst:2169 msgid "" @@ -2898,10 +3822,13 @@ msgid "" "defined, ``x(arg1, arg2, ...)`` roughly translates to ``type(x).__call__(x, " "arg1, ...)``." msgstr "" +"Es llamado cuando la instancia es “llamada” como una función; si este método " +"es definido, ``x(arg1, arg2, …)`` es una clave corta para ``x.__call__(arg1, " +"arg2, …)``." #: ../Doc/reference/datamodel.rst:2176 msgid "Emulating container types" -msgstr "" +msgstr "Emulando tipos de contenedores" #: ../Doc/reference/datamodel.rst:2178 msgid "" @@ -2935,6 +3862,36 @@ msgid "" "`__iter__` should iterate through the object's keys; for sequences, it " "should iterate through the values." msgstr "" +"Los siguientes métodos pueden ser definidos para implementar objetos " +"contenedores. Los contenedores son generalmente secuencias (como listas o " +"tuplas) o mapeos (como diccionarios), pero también pueden representar otros " +"contenedores. La primera colección de métodos es utilizada ya sea para " +"emular una secuencia o para emular un mapeo; la diferencia es que para una " +"secuencia, las llaves permitidas deben ser los enteros *k* por lo que ``0 <= " +"k < N`` donde *N* es la longitud de la secuencia, o secciones de objetos, " +"los cuales definen un rango de elementos. También es recomendado que los " +"mapeos proporcionen los métodos :meth:`keys`, :meth:`values`, :meth:" +"`items`, :meth:`get`, :meth:`clear`, :meth:`setdefault`, :meth:`pop`, :meth:" +"`popitem`, :meth:`!copy`, y :meth:`update` comportándose de manera similar a " +"aquellos para los objetos de diccionario estándar de Python. El módulo :mod:" +"`collections.abc` proporciona una clase base abstracta :class:`~collections." +"abc.MutableMapping` que ayuda a crear aquellos métodos desde un conjunto " +"base de :meth:`__getitem__`, :meth:`__setitem__`, :meth:`__delitem__`, y :" +"meth:`keys`. Secuencias mutables deben proporcionar métodos :meth:`append`, :" +"meth:`count`, :meth:`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`, :" +"meth:`remove`, :meth:`reverse` y :meth:`sort`, como objetos de lista " +"estándar de Python. Por último, tipos de secuencia deben implementar adición " +"(concatenación) y multiplicación (repetición) al definir los métodos :meth:" +"`__add__`, :meth:`__radd__`, :meth:`__iadd__`, :meth:`__mul__`, :meth:" +"`__rmul__` y :meth:`__imul__` descritos a continuación; no deben definir " +"otros operadores numéricos. Es recomendado que ambos mapeos y secuencias " +"implementen el método :meth:`__contains__` para permitir el uso eficiente " +"del operador ``in``; para mapeos, ``in`` debe buscar las llaves de los " +"mapeos; para secuencias, debe buscar a través de los valores. Además es " +"recomendado que tanto mapeos como secuencias implementen el método :meth:" +"`__iter__` para permitir una iteración eficiente por el contenedor; para " +"mapeos, :meth:`__iter__` debe iterar a través de las llaves del objeto; para " +"secuencias, debe iterar a través de los valores." #: ../Doc/reference/datamodel.rst:2213 msgid "" @@ -2943,6 +3900,10 @@ msgid "" "define a :meth:`__bool__` method and whose :meth:`__len__` method returns " "zero is considered to be false in a Boolean context." msgstr "" +"Es llamado para implementar la función incorporada :func:`len`. Debe " +"retornar la longitud del objeto, un entero ``>=`` 0. También, un objeto que " +"no define un método :meth:`__bool__` y cuyo método :meth:`__len__` retorna " +"cero, es considerado como falso en un contexto booleano." #: ../Doc/reference/datamodel.rst:2220 msgid "" @@ -2952,6 +3913,12 @@ msgid "" "OverflowError` by truth value testing, an object must define a :meth:" "`__bool__` method." msgstr "" +"En CPython, se requiere que la longitud sea como mucho :attr:`sys.maxsize`. " +"Si la longitud es más grande que :attr:`!sys.maxsize` algunas " +"características (como :func:`len`) pueden lanzar una excepción :exc:" +"`OverflowError`. Para prevenir lanzar una excepción :exc:`!OverflowError` al " +"validar la verdad de un valor, un objeto debe definir un método :meth:" +"`__bool__`." #: ../Doc/reference/datamodel.rst:2229 msgid "" @@ -2962,19 +3929,28 @@ msgid "" "method didn't exist at all. This method is purely an optimization and is " "never required for correctness." msgstr "" +"Es llamado para implementar :func:`operator.length_hint`. Debe retornar una " +"longitud estimada para el objeto (que puede ser mayor o menor que la " +"longitud actual). La longitud debe ser un entero ``>=`` 0. El valor de " +"retorno también debe ser :const:`NotImplemented` el cual es tratado de igual " +"forma a que si el método ``__length_hint__`` no existiera en absoluto. Este " +"método es puramente una optimización y nunca es requerido para precisión." #: ../Doc/reference/datamodel.rst:2243 msgid "" "Slicing is done exclusively with the following three methods. A call like ::" msgstr "" +"La segmentación se hace exclusivamente con los siguientes tres métodos. Un " +"llamado como ::" #: ../Doc/reference/datamodel.rst:2247 msgid "is translated to ::" -msgstr "" +msgstr "es traducido a ::" #: ../Doc/reference/datamodel.rst:2251 msgid "and so forth. Missing slice items are always filled in with ``None``." msgstr "" +"etcétera. Elementos faltantes de segmentos siempre son llenados con ``None``." #: ../Doc/reference/datamodel.rst:2256 msgid "" @@ -2987,12 +3963,25 @@ msgid "" "negative values), :exc:`IndexError` should be raised. For mapping types, if " "*key* is missing (not in the container), :exc:`KeyError` should be raised." msgstr "" +"Es llamado para implementar la evaluación de ``self[key]``. Para tipos de " +"secuencia, las llaves aceptadas deben ser enteros y objetos de segmento. Se " +"debe tomar en cuenta que la interpretación especial de índices negativos (si " +"la clase desea emular un tipo de secuencia) depende del método :meth:" +"`__getitem__`. Si *key* es de un tipo apropiado, se puede lanzar una " +"excepción :exc:`TypeError`; si es de un valor afuera de la colección de " +"índices para la secuencia (después de alguna interpretación especial de " +"valores negativos), se debe lanzar una excepción :exc:`IndexError`. Para " +"tipos de mapeos, si falta *key* (no en el contenedor), la excepción :exc:" +"`KeyError` debe ser lanzada." #: ../Doc/reference/datamodel.rst:2267 msgid "" ":keyword:`for` loops expect that an :exc:`IndexError` will be raised for " "illegal indexes to allow proper detection of the end of the sequence." msgstr "" +"ciclos :keyword:`for` esperan que una excepción :exc:`IndexError` sea " +"lanzada para que índices ilegales permitan la detección adecuada del fin de " +"una secuencia." #: ../Doc/reference/datamodel.rst:2273 msgid "" @@ -3002,6 +3991,12 @@ msgid "" "sequences if elements can be replaced. The same exceptions should be raised " "for improper *key* values as for the :meth:`__getitem__` method." msgstr "" +"Es llamado para implementar la asignación a ``self[key]``. Lo mismo con " +"respecto a :meth:`__getitem__`. Esto solo debe ser implementado para mapeos " +"si los objetos permiten cambios a los valores de las llaves, o si nuevas " +"llaves pueden ser añadidas, o para secuencias si los elementos pueden ser " +"reemplazados. Las mismas excepciones deben ser lanzadas para valores de " +"*key* inadecuados con respecto al método :meth:`__getitem__`." #: ../Doc/reference/datamodel.rst:2282 msgid "" @@ -3011,12 +4006,21 @@ msgid "" "the sequence. The same exceptions should be raised for improper *key* " "values as for the :meth:`__getitem__` method." msgstr "" +"Es llamado para implementar el borrado de ``self[key]``. Lo mismo con " +"respecto a :meth:`__getitem__`. Esto solo debe ser implementado para mapeos " +"si los objetos permiten el borrado de llaves, o para secuencias si los " +"elementos pueden ser eliminados de la secuencia. Las mismas excepciones " +"deben ser lanzadas por valores de *key* inapropiados con respecto al método :" +"meth:`__getitem__`." #: ../Doc/reference/datamodel.rst:2291 msgid "" "Called by :class:`dict`\\ .\\ :meth:`__getitem__` to implement ``self[key]`` " "for dict subclasses when key is not in the dictionary." msgstr "" +"Es llamado por :class:`dict`\\ .\\ :meth:`__getitem__` para implementar " +"``self[key]`` para subclases de diccionarios cuando la llave no se encuentra " +"en el diccionario." #: ../Doc/reference/datamodel.rst:2297 msgid "" @@ -3025,6 +4029,10 @@ msgid "" "objects in the container. For mappings, it should iterate over the keys of " "the container." msgstr "" +"Este método es llamado cuando se requiere un iterador para un contenedor. " +"Este método debe retornar un nuevo objeto iterador que pueda iterar todos " +"los objetos del contenedor. Para mapeos, debe iterar sobre las llaves del " +"contenedor." #: ../Doc/reference/datamodel.rst:2301 msgid "" @@ -3032,6 +4040,9 @@ msgid "" "return themselves. For more information on iterator objects, see :ref:" "`typeiter`." msgstr "" +"Objetos iteradores también necesitan implementar este método; son requeridos " +"para retornarse a sí mismos. Para mayor información sobre objetos " +"iteradores, ver :ref:`typeiter`." #: ../Doc/reference/datamodel.rst:2307 msgid "" @@ -3039,6 +4050,9 @@ msgid "" "iteration. It should return a new iterator object that iterates over all " "the objects in the container in reverse order." msgstr "" +"Es llamado (si existe) por la función incorporada :func:`reversed` para " +"implementar una interacción invertida. Debe retornar un nuevo objeto " +"iterador que itere sobre todos los objetos en el contenedor en orden inverso." #: ../Doc/reference/datamodel.rst:2311 msgid "" @@ -3048,6 +4062,12 @@ msgid "" "provide :meth:`__reversed__` if they can provide an implementation that is " "more efficient than the one provided by :func:`reversed`." msgstr "" +"Si el método :meth:`__reversed__` no es proporcionado, la función " +"incorporada :func:`reversed` recurrirá a utilizar el protocolo de secuencia " +"(:meth:`__len__` y :meth:`__getitem__`). Objetos que permiten el protocolo " +"de secuencia deben únicamente proporcionar :meth:`__reversed__` si no pueden " +"proporcionar una implementación que sea más eficiente que la proporcionada " +"por :func:`reversed`." #: ../Doc/reference/datamodel.rst:2318 msgid "" @@ -3056,6 +4076,11 @@ msgid "" "objects can supply the following special method with a more efficient " "implementation, which also does not require the object be iterable." msgstr "" +"Los operadores de prueba de pertenencia (:keyword:`in` and :keyword:`not " +"in`) son normalmente implementados como una iteración sobre un contenedor. " +"Sin embargo, los objetos de contenedor pueden proveer el siguiente método " +"especial con una implementación más eficiente, que tampoco requiere que el " +"objeto sea iterable." #: ../Doc/reference/datamodel.rst:2325 msgid "" @@ -3063,6 +4088,10 @@ msgid "" "is in *self*, false otherwise. For mapping objects, this should consider " "the keys of the mapping rather than the values or the key-item pairs." msgstr "" +"Es llamado para implementar operadores de prueba de pertenencia. Deben " +"retornar *true* si *item* se encuentra en *self*, de lo contrario *false*. " +"Para objetos de mapeo, estos debe considerar las llaves del mapeo en lugar " +"de los valores o los pares de llave-valor." #: ../Doc/reference/datamodel.rst:2329 msgid "" @@ -3071,10 +4100,15 @@ msgid "" "protocol via :meth:`__getitem__`, see :ref:`this section in the language " "reference `." msgstr "" +"Para objetos que no definen :meth:`__contains__`, la prueba de pertenencia " +"primero intenta la iteración a través de :meth:`__iter__`, y luego el " +"antiguo protocolo de iteración de secuencia a través de :meth:`__getitem__`, " +"ver :ref:`esta sección en la referencia del lenguaje `." #: ../Doc/reference/datamodel.rst:2338 msgid "Emulating numeric types" -msgstr "" +msgstr "Emulando tipos numéricos" #: ../Doc/reference/datamodel.rst:2340 msgid "" @@ -3083,6 +4117,10 @@ msgid "" "number implemented (e.g., bitwise operations for non-integral numbers) " "should be left undefined." msgstr "" +"Los siguientes métodos pueden ser definidos para emular objetos numéricos. " +"Métodos que corresponden a operaciones que no son permitidas por el número " +"particular implementado (por ejemplo, operaciones bit a bit para números no " +"enteros) se deben dejar sin definir." #: ../Doc/reference/datamodel.rst:2366 msgid "" @@ -3096,12 +4134,24 @@ msgid "" "should be defined to accept an optional third argument if the ternary " "version of the built-in :func:`pow` function is to be supported." msgstr "" +"Estos métodos son llamados para implementar las operaciones aritméticas " +"binarias (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, :" +"func:`pow`, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``). Por ejemplo, para " +"evaluar la expresión ``x + y``, donde *x* es instancia de una clase que " +"tiene un método :meth:`__add__`, ``x.__add__(y)`` es llamado. El método :" +"meth:`__divmod__` debe ser el equivalente a usar :meth:`__floordiv__` y :" +"meth:`__mod__`; no debe ser relacionado a :meth:`__truediv__`. Se debe tomar " +"en cuenta que :meth:`__pow__` debe ser definido para aceptar un tercer " +"argumento opcional si la versión ternaria de la función incorporada :func:" +"`pow` es soportada." #: ../Doc/reference/datamodel.rst:2377 msgid "" "If one of those methods does not support the operation with the supplied " "arguments, it should return ``NotImplemented``." msgstr "" +"Si alguno de esos métodos no permiten la operación con los argumentos " +"suministrados, debe retornar ``NotImplemented``." #: ../Doc/reference/datamodel.rst:2400 msgid "" @@ -3114,12 +4164,24 @@ msgid "" "an instance of a class that has an :meth:`__rsub__` method, ``y." "__rsub__(x)`` is called if ``x.__sub__(y)`` returns *NotImplemented*." msgstr "" +"Estos métodos son llamados para implementar las operaciones aritméticas " +"binarias (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, :" +"func:`pow`, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``) con operandos " +"reflejados (intercambiados). Estas funciones son llamadas únicamente si el " +"operando izquierdo no soporta la operación correspondiente [#]_ y los " +"operandos son de tipos diferentes. [#]_ Por ejemplo, para evaluar la " +"expresión ``x - y``, donde *y* es instancia de una clase que tiene un " +"método :meth:`__rsub__`, ``y.__rsub__(x)`` es llamado si ``x.__sub__(y)`` " +"retorna *NotImplemented*." #: ../Doc/reference/datamodel.rst:2411 msgid "" "Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the " "coercion rules would become too complicated)." msgstr "" +"Se debe tomar en cuenta que la función ternaria :func:`pow` no intentará " +"llamar a :meth:`__rpow__` (las reglas de coerción se volverían demasiado " +"complicadas)." #: ../Doc/reference/datamodel.rst:2416 msgid "" @@ -3129,6 +4191,11 @@ msgid "" "reflected method. This behavior allows subclasses to override their " "ancestors' operations." msgstr "" +"Si el tipo del operando de la derecha es una subclase del tipo del operando " +"de la izquierda y esa subclase proporciona el método reflejado para la " +"operación, este método será llamado antes del método no reflejado del " +"operando izquierdo. Este comportamiento permite que las subclases anulen las " +"operaciones de sus predecesores." #: ../Doc/reference/datamodel.rst:2437 msgid "" @@ -3145,6 +4212,19 @@ msgid "" "(see :ref:`faq-augmented-assignment-tuple-error`), but this behavior is in " "fact part of the data model." msgstr "" +"Estos métodos son llamados para implementar las asignaciones aritméticas " +"aumentadas (``+=``, ``-=``, ``*=``, ``@=``, ``/=``, ``//=``, ``%=``, " +"``**=``, ``<<=``, ``>>=``, ``&=``, ``^=``, ``|=``). Estos métodos deben " +"intentar realizar la operación *in-place* (modificando *self*) y retornar el " +"resultado (que puede, pero no tiene que ser *self*). Si un método específico " +"no es definido, la asignación aumentada regresa a los métodos normales. Por " +"ejemplo, si *x* es la instancia de una clase con el método :meth:`__iadd__`, " +"``x += y`` es equivalente a ``x = x.__iadd__(y)``. De lo contrario ``x." +"__add__(y)`` y ``y.__radd__(x)`` se consideran al igual que con la " +"evaluación de ``x + y``. En ciertas situaciones, asignaciones aumentadas " +"pueden resultar en errores no esperados (ver :ref:`faq-augmented-assignment-" +"tuple-error`), pero este comportamiento es en realidad parte del modelo de " +"datos." #: ../Doc/reference/datamodel.rst:2452 msgid "" @@ -3152,18 +4232,25 @@ msgid "" "meth:`__ipow__` but returns ``NotImplemented`` would fail to fall back to " "``x.__pow__(y)`` and ``y.__rpow__(x)``. This bug is fixed in Python 3.10." msgstr "" +"Debido a un error en el mecanismo de envío de ``**=``, una clase que define :" +"meth:`__ipow__` pero retorna ``NotImplemented`` no podría volver a ``x." +"__pow__(y)`` y ``y.__rpow__(x)``. Este error se corrigió en Python 3.10." #: ../Doc/reference/datamodel.rst:2465 msgid "" "Called to implement the unary arithmetic operations (``-``, ``+``, :func:" "`abs` and ``~``)." msgstr "" +"Es llamado para implementar las operaciones aritméticas unarias (``-``, ``" +"+``, :func:`abs` and ``~``)." #: ../Doc/reference/datamodel.rst:2478 msgid "" "Called to implement the built-in functions :func:`complex`, :func:`int` and :" "func:`float`. Should return a value of the appropriate type." msgstr "" +"Es llamado para implementar las funciones incorporadas :func:`complex`, :" +"func:`int` y :func:`float`. Debe retornar un valor del tipo apropiado." #: ../Doc/reference/datamodel.rst:2485 msgid "" @@ -3173,6 +4260,11 @@ msgid "" "functions). Presence of this method indicates that the numeric object is an " "integer type. Must return an integer." msgstr "" +"Es llamado para implementar :func:`operator.index`, y cuando sea que Python " +"necesite convertir sin pérdidas el objeto numérico a un objeto entero (tal " +"como en la segmentación o *slicing*, o las funciones incorporadas :func:" +"`bin`, :func:`hex` y :func:`oct`). La presencia de este método indica que el " +"objeto numérico es un tipo entero. Debe retornar un entero." #: ../Doc/reference/datamodel.rst:2491 msgid "" @@ -3180,6 +4272,9 @@ msgid "" "defined then corresponding built-in functions :func:`int`, :func:`float` " "and :func:`complex` fall back to :meth:`__index__`." msgstr "" +"Si :meth:`__int__`, :meth:`__float__` y :meth:`__complex__` no son " +"definidos, entonces todas las funciones incorporadas correspondientes :func:" +"`int`, :func:`float` y :func:`complex` vuelven a :meth:`__index__`." #: ../Doc/reference/datamodel.rst:2503 msgid "" @@ -3189,16 +4284,23 @@ msgid "" "return the value of the object truncated to an :class:`~numbers.Integral` " "(typically an :class:`int`)." msgstr "" +"Es llamado para implementar la función incorporada :func:`round` y las " +"funciones :mod:`math` :func:`~math.trunc`, :func:`~math.floor` y :func:" +"`~math.ceil`. A menos que *ndigits* sea pasado a :meth:`!__round__` todos " +"estos métodos deben retornar el valor del objeto truncado a :class:`~numbers." +"Integral` (normalmente :class:`int`)." #: ../Doc/reference/datamodel.rst:2509 msgid "" "If :meth:`__int__` is not defined then the built-in function :func:`int` " "falls back to :meth:`__trunc__`." msgstr "" +"Si :meth:`__int__` no es definido, entonces la función incorporada :func:" +"`int` regresa a :meth:`__trunc__`." #: ../Doc/reference/datamodel.rst:2516 msgid "With Statement Context Managers" -msgstr "" +msgstr "Gestores de Contexto en la Declaración *with*" #: ../Doc/reference/datamodel.rst:2518 msgid "" @@ -3209,17 +4311,29 @@ msgid "" "using the :keyword:`!with` statement (described in section :ref:`with`), but " "can also be used by directly invoking their methods." msgstr "" +"Un :dfn:`context manager` es un objeto que define el contexto en tiempo de " +"ejecución a ser establecido cuando se ejecuta una declaración :keyword:" +"`with`. El gestor de contexto maneja la entrada y la salida del contexto en " +"tiempo de ejecución deseado para la ejecución del bloque de código. Los " +"gestores de contexto son normalmente invocados utilizando la declaración :" +"keyword:`!with` (descritos en la sección :ref:`with`), pero también pueden " +"ser utilizados al invocar directamente sus métodos." #: ../Doc/reference/datamodel.rst:2529 msgid "" "Typical uses of context managers include saving and restoring various kinds " "of global state, locking and unlocking resources, closing opened files, etc." msgstr "" +"Usos típicos de los gestores de contexto incluyen guardar y restablecer " +"diversos tipos de declaraciones globales, bloquear y desbloquear recursos, " +"cerrar archivos abiertos, etc." #: ../Doc/reference/datamodel.rst:2532 msgid "" "For more information on context managers, see :ref:`typecontextmanager`." msgstr "" +"Para más información sobre gestores de contexto, ver :ref:" +"`typecontextmanager`." #: ../Doc/reference/datamodel.rst:2537 msgid "" @@ -3227,6 +4341,10 @@ msgid "" "statement will bind this method's return value to the target(s) specified in " "the :keyword:`!as` clause of the statement, if any." msgstr "" +"Ingresa al contexto en tiempo de ejecución relacionado con este objeto. La " +"declaración :keyword:`with` ligará el valor de retorno de este método al " +"objetivo especificado en cláusula :keyword:`!as` de la declaración, en caso " +"de existir." #: ../Doc/reference/datamodel.rst:2544 msgid "" @@ -3234,6 +4352,9 @@ msgid "" "exception that caused the context to be exited. If the context was exited " "without an exception, all three arguments will be :const:`None`." msgstr "" +"Sale del contexto en tiempo de ejecución relacionado a este objeto. Los " +"parámetros describen la excepción que causa la salida del contexto. Si éste " +"se termina sin excepción, los tres argumentos serán :const:`None`." #: ../Doc/reference/datamodel.rst:2548 msgid "" @@ -3242,26 +4363,35 @@ msgid "" "Otherwise, the exception will be processed normally upon exit from this " "method." msgstr "" +"Si se proporciona una excepción, y el método desea eliminarla (por ejemplo, " +"prevenir que sea propagada), debe retornar un valor verdadero. De lo " +"contrario, la excepción será procesada de forma normal al salir de este " +"método." #: ../Doc/reference/datamodel.rst:2552 msgid "" "Note that :meth:`__exit__` methods should not reraise the passed-in " "exception; this is the caller's responsibility." msgstr "" +"Se debe tomar en cuenta que los métodos :meth:`__exit__` no deben lanzar de " +"nuevo la excepción que se pasa; esto es la responsabilidad de quien hace el " +"llamado." #: ../Doc/reference/datamodel.rst:2559 msgid ":pep:`343` - The \"with\" statement" -msgstr "" +msgstr ":pep:`343` - La declaración “with”" #: ../Doc/reference/datamodel.rst:2559 msgid "" "The specification, background, and examples for the Python :keyword:`with` " "statement." msgstr "" +"La especificación, el antecedente, y los ejemplos para la declaración de " +"Python :keyword:`with`." #: ../Doc/reference/datamodel.rst:2566 msgid "Special method lookup" -msgstr "" +msgstr "Búsqueda de método especial" #: ../Doc/reference/datamodel.rst:2568 msgid "" @@ -3270,6 +4400,11 @@ msgid "" "object's instance dictionary. That behaviour is the reason why the " "following code raises an exception::" msgstr "" +"Para clases personalizadas, invocaciones implícitas de métodos especiales " +"solo están garantizados para trabajar correctamente si son definidos en un " +"tipo de objeto, no en el diccionario de instancia del objeto. Ese " +"comportamiento es la razón por la que el siguiente código lanza una " +"excepción::" #: ../Doc/reference/datamodel.rst:2583 msgid "" @@ -3279,6 +4414,11 @@ msgid "" "used the conventional lookup process, they would fail when invoked on the " "type object itself::" msgstr "" +"La razón fundamental detrás de este comportamiento yace en una serie de " +"métodos especiales como :meth:`__hash__` y :meth:`__repr__` que son " +"implementados por todos los objetos, incluyendo objetos de tipo. Si la " +"búsqueda implícita de estos métodos usaran el proceso de búsqueda " +"convencional, fallarían al ser invocados en el objeto de tipo mismo::" #: ../Doc/reference/datamodel.rst:2596 msgid "" @@ -3286,6 +4426,9 @@ msgid "" "sometimes referred to as 'metaclass confusion', and is avoided by bypassing " "the instance when looking up special methods::" msgstr "" +"Intentar invocar de manera incorrecta el método no ligado de una clase de " +"esta forma a veces es denominado como ‘confusión de metaclase’, y se evita " +"sobrepasando la instancia al buscar métodos especiales::" #: ../Doc/reference/datamodel.rst:2605 msgid "" @@ -3293,6 +4436,10 @@ msgid "" "correctness, implicit special method lookup generally also bypasses the :" "meth:`__getattribute__` method even of the object's metaclass::" msgstr "" +"Además de sobrepasar cualquier atributo de instancia en aras de lo " +"apropiado, la búsqueda implícita del método especial generalmente también " +"sobrepasa al método :meth:`__getattribute__` incluso de la metaclase del " +"objeto::" #: ../Doc/reference/datamodel.rst:2631 msgid "" @@ -3302,14 +4449,19 @@ msgid "" "method *must* be set on the class object itself in order to be consistently " "invoked by the interpreter)." msgstr "" +"Sobrepasar el mecanismo de :meth:`__getattribute__` de esta forma " +"proporciona un alcance importante para optimizaciones de velocidad dentro " +"del intérprete, a costa de cierta flexibilidad en el manejo de métodos " +"especiales (el método especial *debe* ser establecido en el objeto de clase " +"mismo para ser invocado consistentemente por el intérprete)." #: ../Doc/reference/datamodel.rst:2642 msgid "Coroutines" -msgstr "" +msgstr "Corrutinas" #: ../Doc/reference/datamodel.rst:2646 msgid "Awaitable Objects" -msgstr "" +msgstr "Objetos Esperables" #: ../Doc/reference/datamodel.rst:2648 msgid "" @@ -3317,6 +4469,9 @@ msgid "" "method. :term:`Coroutine objects ` returned from :keyword:`async " "def` functions are awaitable." msgstr "" +"Un objeto :term:`awaitable` generalmente implementa a un método :meth:" +"`__await__`. Objetos :term:`Coroutine` retornados a partir de funciones :" +"keyword:`async def` son esperables." #: ../Doc/reference/datamodel.rst:2654 msgid "" @@ -3324,6 +4479,9 @@ msgid "" "with :func:`types.coroutine` or :func:`asyncio.coroutine` are also " "awaitable, but they do not implement :meth:`__await__`." msgstr "" +"Los objetos :term:`generator iterator` retornados a partir de generadores " +"decorados con :func:`types.coroutine` o :func:`asyncio.coroutine` también " +"son esperables, pero no implementan :meth:`__await__`." #: ../Doc/reference/datamodel.rst:2660 msgid "" @@ -3331,14 +4489,17 @@ msgid "" "`awaitable` objects. For instance, :class:`asyncio.Future` implements this " "method to be compatible with the :keyword:`await` expression." msgstr "" +"Debe retornar un :term:`iterator`. Debe ser utilizado para implementar " +"objetos :term:`awaitable`. Por ejemplo, :class:`asyncio.Future` implementa " +"este método para ser compatible con la expresión :keyword:`await`." #: ../Doc/reference/datamodel.rst:2666 msgid ":pep:`492` for additional information about awaitable objects." -msgstr "" +msgstr ":pep:`492` para información adicional sobre objetos esperables." #: ../Doc/reference/datamodel.rst:2672 msgid "Coroutine Objects" -msgstr "" +msgstr "Objetos de Corrutina" #: ../Doc/reference/datamodel.rst:2674 msgid "" @@ -3350,6 +4511,14 @@ msgid "" "raises an exception, it is propagated by the iterator. Coroutines should " "not directly raise unhandled :exc:`StopIteration` exceptions." msgstr "" +"Objetos :term:`Coroutine` son objetos :term:`awaitable`. La ejecución de una " +"corrutina puede ser controlada llamando :meth:`__await__` e iterando sobre " +"el resultado. Cuando la corrutina ha terminado de ejecutar y retorna, el " +"iterados levanta una excepción :exc:`StopIteration`, y el atributo :attr:" +"`~StopIteration.value` de dicha excepción mantiene el valor de retorno. Si " +"la corrutina lanza una excepción, ésta es propagada por el iterador. Las " +"corrutinas no deben lanzar directamente excepciones :exc:`StopIteration` no " +"manejadas." #: ../Doc/reference/datamodel.rst:2682 msgid "" @@ -3357,10 +4526,15 @@ msgid "" "of generators (see :ref:`generator-methods`). However, unlike generators, " "coroutines do not directly support iteration." msgstr "" +"Las corrutinas también tienen los métodos mencionados a continuación, los " +"cuales son análogos a los de los generadores. (ver :ref:`generator-" +"methods`). Sin embargo, a diferencia de los generadores, las corrutinas no " +"soportan directamente iteración." #: ../Doc/reference/datamodel.rst:2686 msgid "It is a :exc:`RuntimeError` to await on a coroutine more than once." msgstr "" +"Es un error :exc:`RuntimeError` esperar a una corrutina más de una vez." #: ../Doc/reference/datamodel.rst:2692 msgid "" @@ -3371,6 +4545,13 @@ msgid "" "result (return value, :exc:`StopIteration`, or other exception) is the same " "as when iterating over the :meth:`__await__` return value, described above." msgstr "" +"Inicia o continua la ejecución de una corrutina. Si *value* es ``None``, " +"esto es equivalente a avanzar al iterador retornado por :meth:`__await__`. " +"Si *value* no es ``None``, este método delega al método :meth:`~generator." +"send` del iterador que causó la suspensión de la corrutina. El resultado (el " +"valor de retorno, :exc:`StopIteration`, u otra excepción) es el mismo que " +"cuando se itera sobre el valor de retorno de :meth:`__await__`, descrito " +"anteriormente." #: ../Doc/reference/datamodel.rst:2702 msgid "" @@ -3382,6 +4563,13 @@ msgid "" "meth:`__await__` return value, described above. If the exception is not " "caught in the coroutine, it propagates back to the caller." msgstr "" +"Lanza la excepción especificada en la corrutina. Este método delega a :meth:" +"`~generator.throw` del iterador que causó la suspensión de la corrutina, si " +"dicho método existe. De lo contrario, la excepción es lanzada al punto de la " +"suspensión. El resultado (valor de retorno, :exc:`StopIteration`, u otra " +"excepción) es el mismo que cuando se itera sobre el valor de retorno de :" +"meth:`__await__` descrito anteriormente. Si la excepción no es obtenida en " +"la corrutina, ésta se propaga de regreso a quien realizó el llamado." #: ../Doc/reference/datamodel.rst:2713 msgid "" @@ -3392,89 +4580,117 @@ msgid "" "causing the coroutine to immediately clean itself up. Finally, the coroutine " "is marked as having finished executing, even if it was never started." msgstr "" +"Causa que la corrutina misma se borre a sí misma y termine su ejecución. Si " +"la corrutina es suspendida, este método primero delega a :meth:`~generator." +"close`, si existe, del iterador que causó la suspensión de la corrutina. " +"Luego lanza una excepción :exc:`GeneratorExit` en el punto de suspensión, " +"causando que la corrutina se borre a sí misma. Finalmente, la corrutina es " +"marcada como completada, aún si nunca inició." #: ../Doc/reference/datamodel.rst:2721 msgid "" "Coroutine objects are automatically closed using the above process when they " "are about to be destroyed." msgstr "" +"Objetos de corrutina son cerrados automáticamente utilizando el proceso " +"anterior cuando están a punto de ser destruidos." #: ../Doc/reference/datamodel.rst:2727 msgid "Asynchronous Iterators" -msgstr "" +msgstr "Iteradores asíncronos" #: ../Doc/reference/datamodel.rst:2729 msgid "" "An *asynchronous iterator* can call asynchronous code in its ``__anext__`` " "method." msgstr "" +"Un *iterador asíncrono* puede llamar código asíncrono en su método " +"``__anext__``." #: ../Doc/reference/datamodel.rst:2732 msgid "" "Asynchronous iterators can be used in an :keyword:`async for` statement." msgstr "" +"Iteradores asíncronos pueden ser utilizados en la declaración :keyword:" +"`async for`." #: ../Doc/reference/datamodel.rst:2736 msgid "Must return an *asynchronous iterator* object." -msgstr "" +msgstr "Debe retornar un objeto de *iterador asíncrono*." #: ../Doc/reference/datamodel.rst:2740 msgid "" "Must return an *awaitable* resulting in a next value of the iterator. " "Should raise a :exc:`StopAsyncIteration` error when the iteration is over." msgstr "" +"Debe retornar un *esperable* (awaitable) resultante en el siguiente valor " +"del iterador. Debe levantar una excepción :exc:`StopAsyncIteration` cuando " +"la iteración termina." #: ../Doc/reference/datamodel.rst:2743 msgid "An example of an asynchronous iterable object::" -msgstr "" +msgstr "Un ejemplo de objeto iterable asíncrono::" #: ../Doc/reference/datamodel.rst:2760 msgid "" "Prior to Python 3.7, ``__aiter__`` could return an *awaitable* that would " "resolve to an :term:`asynchronous iterator `." msgstr "" +"Antes de Python 3.7, ``__aiter__`` podía retornar un *esperable* que se " +"resolvería en un :term:`asynchronous iterator `." #: ../Doc/reference/datamodel.rst:2765 msgid "" "Starting with Python 3.7, ``__aiter__`` must return an asynchronous iterator " "object. Returning anything else will result in a :exc:`TypeError` error." msgstr "" +"A partir de Python 3.7, ``__aiter__`` debe retornar un objeto iterador " +"asíncrono. Retornar cualquier otra cosa resultará en un error :exc:" +"`TypeError`." #: ../Doc/reference/datamodel.rst:2773 msgid "Asynchronous Context Managers" -msgstr "" +msgstr "Gestores de Contexto Asíncronos" #: ../Doc/reference/datamodel.rst:2775 msgid "" "An *asynchronous context manager* is a *context manager* that is able to " "suspend execution in its ``__aenter__`` and ``__aexit__`` methods." msgstr "" +"Un *gestor de contexto asíncrono* es un *gestor de contexto* que puede " +"suspender la ejecución en sus métodos ``__aenter__`` y ``__aexit__``." #: ../Doc/reference/datamodel.rst:2778 msgid "" "Asynchronous context managers can be used in an :keyword:`async with` " "statement." msgstr "" +"Los gestores de contexto asíncronos pueden ser utilizados en una " +"declaración :keyword:`async with`." #: ../Doc/reference/datamodel.rst:2782 msgid "" "Semantically similar to :meth:`__enter__`, the only difference being that it " "must return an *awaitable*." msgstr "" +"Semánticamente similar a :meth:`__enter__`, siendo la única diferencia que " +"debe retorna un *esperable*." #: ../Doc/reference/datamodel.rst:2787 msgid "" "Semantically similar to :meth:`__exit__`, the only difference being that it " "must return an *awaitable*." msgstr "" +"Semánticamente similar a :meth:`__exit__`, siendo la única diferencia que " +"debe retornar un *esperable*." #: ../Doc/reference/datamodel.rst:2790 msgid "An example of an asynchronous context manager class::" -msgstr "" +msgstr "Un ejemplo de una clase de gestor de contexto asíncrono::" #: ../Doc/reference/datamodel.rst:2803 msgid "Footnotes" -msgstr "" +msgstr "Notas a pie de página" #: ../Doc/reference/datamodel.rst:2804 msgid "" @@ -3482,6 +4698,9 @@ msgid "" "controlled conditions. It generally isn't a good idea though, since it can " "lead to some very strange behaviour if it is handled incorrectly." msgstr "" +"Es posible cambiar en algunos casos un tipo de objeto bajo ciertas " +"circunstancias controladas. Generalmente no es buena idea, ya que esto puede " +"llevar a un comportamiento bastante extraño de no ser tratado correctamente." #: ../Doc/reference/datamodel.rst:2808 msgid "" @@ -3490,6 +4709,10 @@ msgid "" "raise a :exc:`TypeError`, but may do so by relying on the behavior that " "``None`` is not callable." msgstr "" +"Los métodos :meth:`__hash__`, :meth:`__iter__`, :meth:`__reversed__`, y :" +"meth:`__contains__` tienen manejo especial para esto; otros lanzarán un " +"error :exc:`TypeError`, pero lo harán dependiendo del comportamiento de que " +"``None`` no se puede llamar." #: ../Doc/reference/datamodel.rst:2813 msgid "" @@ -3498,6 +4721,11 @@ msgid "" "want to force fallback to the right operand's reflected method—that will " "instead have the opposite effect of explicitly *blocking* such fallback." msgstr "" +"“No soporta” aquí significa que la clase no tiene tal método, o el método " +"retorna ``NotImplemented``. No establecer el método a ``None`` si se quiere " +"forzar el retroceso al método reflejado del operando correcto—eso, por el " +"contrario, tendrá un efecto opuesto de bloquear explícitamente dicho " +"retroceso." #: ../Doc/reference/datamodel.rst:2819 msgid "" @@ -3505,3 +4733,6 @@ msgid "" "method -- such as :meth:`__add__` -- fails then the overall operation is not " "supported, which is why the reflected method is not called." msgstr "" +"Para operandos del mismo tipo, se asume que si el método no reflejado (como :" +"meth:`__add__`) falla, la operación no es soportada, por lo cual el método " +"reflejado no es llamado."