From 6e785002468ba0e96cc5a24c8314dca6bab93fed Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 11:25:57 +0100 Subject: [PATCH 1/9] Review and updated fuzzy entries after upstream sync. --- builtins/exceptions.po | 8 +++---- builtins/functions.po | 49 ++++++++++++++++++---------------------- builtins/stdtypes.po | 44 ++++++++++++------------------------ builtins/threadsafety.po | 19 ++++++++-------- 4 files changed, 49 insertions(+), 71 deletions(-) diff --git a/builtins/exceptions.po b/builtins/exceptions.po index 004b3e5f..d3e49ead 100644 --- a/builtins/exceptions.po +++ b/builtins/exceptions.po @@ -661,15 +661,14 @@ msgstr "" "*winerror* ignoriert und das Attribut :attr:`winerror` existiert nicht." #: ../../builtins/exceptions.rst:397 -#, fuzzy msgid "" "The corresponding error message, as provided by the operating system. Under " "POSIX, it is obtained using the C functions :c:func:`!strerror` or :c:func:`!" "strerror_r`; under Windows, :c:func:`!FormatMessage` is used." msgstr "" "Die entsprechende Fehlermeldung, wie sie vom Betriebssystem bereitgestellt " -"wird. Sie wird unter POSIX durch die C-Funktion :c:func:`!perror` und unter " -"Windows durch :c:func:`!FormatMessage` formatiert." +"wird. Unter POSIX wird sie über die C-Funktionen :c:func:`!strerror` oder " +":c:func:`!strerror_r` ermittelt, unter Windows über :c:func:`!FormatMessage`." #: ../../builtins/exceptions.rst:404 msgid "" @@ -1847,7 +1846,6 @@ msgid "The class hierarchy for built-in exceptions is:" msgstr "Die Klassenhierarchie für integrierte Exceptions ist:" #: ../../builtins/exceptions.rst:1101 -#, fuzzy msgid "" "BaseException\n" " ├── BaseExceptionGroup\n" @@ -1935,7 +1933,7 @@ msgstr "" " ├── EOFError\n" " ├── ExceptionGroup [BaseExceptionGroup]\n" " ├── ImportError\n" -" │ └── ImportCycleError\n" +" │ ├── ImportCycleError\n" " │ └── ModuleNotFoundError\n" " ├── LookupError\n" " │ ├── IndexError\n" diff --git a/builtins/functions.po b/builtins/functions.po index a2a3758e..954cc508 100644 --- a/builtins/functions.po +++ b/builtins/functions.po @@ -872,7 +872,6 @@ msgstr "" "gelesen wurde (häufig wird ``''`` verwendet)." #: ../../builtins/functions.rst:312 -#, fuzzy msgid "" "The *mode* argument specifies what kind of code must be compiled; it can be " "``'exec'`` if *source* consists of a sequence of statements, ``'eval'`` if " @@ -888,7 +887,11 @@ msgstr "" "besteht, ``'eval'``, wenn es aus einem einzelnen Ausdruck besteht, oder " "``'single'``, wenn es aus einer einzelnen interaktiven Anweisung besteht (im " "letzteren Fall werden Ausdrucksanweisungen, die einen anderen Wert als " -"``None`` ergeben, ausgegeben)." +"``None`` ergeben, ausgegeben). Es kann außerdem ``'func_type'`` sein, wenn " +"*source* aus einer Typsignatur einer Funktion besteht, zum Beispiel " +"``(int) -> str``. Weitere Informationen stehen unter :func:`ast.parse`. " +"Dieser Modus erfordert, dass :data:`ast.PyCF_ONLY_AST` in *flags* übergeben " +"wird." #: ../../builtins/functions.rst:322 msgid "" @@ -1037,16 +1040,15 @@ msgstr "" #: ../../builtins/functions.rst:394 msgid "Added support for ``mode='func_type'``." -msgstr "" +msgstr "Unterstützung für ``mode='func_type'`` hinzugefügt." #: ../../builtins/functions.rst:397 -#, fuzzy msgid "" ":exc:`SyntaxError` is raised instead of :exc:`ValueError` when null bytes " "are encountered in *source*." msgstr "" -"Früher wurde ein :exc:`TypeError` ausgelöst, wenn in *source* Null-Bytes " -"auftraten." +"Bei Null-Bytes in *source* wird jetzt ein :exc:`SyntaxError` statt eines " +":exc:`ValueError` ausgelöst." #: ../../builtins/functions.rst:401 msgid "Added the *module* parameter." @@ -1617,18 +1619,17 @@ msgstr "" "Builtins zugreifen." #: ../../builtins/functions.rst:734 -#, fuzzy msgid "" "The *closure* argument specifies a closure--a tuple of cellvars. It's only " "valid when *source* is a code object containing :term:`free (closure) " "variables `. The length of the tuple must exactly match " "the length of the code object's :attr:`~codeobject.co_freevars` attribute." msgstr "" -"Das Argument *closure* spezifiziert einen Closure – ein Tupel von Cell-" -"Variablen. Es ist nur dann gültig, wenn das *Objekt* ein Code-Objekt ist, " -"das :term:`freie (Closure-)Variablen ` enthält. Die Länge " -"des Tupels muss exakt der Länge des " -"Attributs :attr:`~codeobject.co_freevars` des Code-Objekts entsprechen." +"Das Argument *closure* gibt eine Closure an – ein Tupel von Cell-Variablen. " +"Es ist nur dann gültig, wenn *source* ein Code-Objekt ist, das " +":term:`freie (Closure-)Variablen ` enthält. Die Länge des " +"Tupels muss exakt der Länge des Attributs :attr:`~codeobject.co_freevars` " +"des Code-Objekts entsprechen." #: ../../builtins/functions.rst:747 msgid "" @@ -3511,7 +3512,6 @@ msgstr "" "und :ref:`typesseq` dokumentiert." #: ../../builtins/functions.rst:1783 -#, fuzzy msgid "" "Return a string containing a printable representation of an object. For " "many types, this function makes an attempt to return a string that would " @@ -3530,8 +3530,7 @@ msgstr "" "zusätzliche Informationen – häufig einschließlich Name und Adresse des " "Objekts – enthält. Eine Klasse kann steuern, was diese Funktion für ihre " "Instanzen zurückgibt, indem sie eine :meth:`~object.__repr__`-Methode " -"definiert. Ist :func:`sys.displayhook` nicht verfügbar, löst diese Funktion " -"einen :exc:`RuntimeError` aus." +"definiert. #: ../../builtins/functions.rst:1792 msgid "This class has a custom representation that can be evaluated::" @@ -4166,7 +4165,6 @@ msgstr "" "type)`` wahr sein (dies ist nützlich für Klassenmethoden)." #: ../../builtins/functions.rst:2102 -#, fuzzy msgid "" "When called directly within an ordinary method of a class, both arguments " "may be omitted (\"zero-argument :func:`!super`\"). In this case, *type* will " @@ -4177,12 +4175,11 @@ msgid "" msgstr "" "Wenn der Aufruf direkt innerhalb einer gewöhnlichen Methode einer Klasse " "erfolgt, können beide Argumente weggelassen werden („:func:`!super` ohne " -"Argumente“). In diesem Fall ist *type* die umschließende Klasse und *obj* " -"das erste Argument der unmittelbar umschließenden Funktion (typischerweise " -"``self``). (Dies bedeutet, dass :func:`!super` ohne Argumente innerhalb " -"verschachtelter Funktionen – einschließlich Generator-Ausdrücken, die " -"implizit verschachtelte Funktionen erzeugen – nicht wie erwartet " -"funktioniert.)" +"Argumente“). In diesem Fall ist *type* die umschließende Klasse und " +"*object_or_type* das erste Argument der unmittelbar umschließenden Funktion " +"(typischerweise ``self``). :func:`!super` ohne Argumente funktioniert " +"innerhalb verschachtelter Funktionen nicht wie erwartet, auch nicht in " +"Generator-Ausdrücken, die implizit verschachtelte Funktionen erzeugen." #: ../../builtins/functions.rst:2109 msgid "" @@ -4698,7 +4695,6 @@ msgstr "" "bestimmen." #: ../../builtins/functions.rst:2365 -#, fuzzy msgid "" "*level* specifies whether to use absolute or relative imports. ``0`` (the " "default) means only perform absolute imports. For relative imports, ``1`` " @@ -4707,10 +4703,9 @@ msgid "" msgstr "" "*level* gibt an, ob absolute oder relative Importe verwendet werden sollen. " "``0`` (der Standard) bedeutet, dass nur absolute Importe durchgeführt " -"werden. Positive Werte für *level* geben die Anzahl der übergeordneten " -"Verzeichnisse an, die ausgehend vom Verzeichnis des Moduls, " -"das :func:`__import__` aufruft, durchsucht werden sollen (siehe :pep:`328` " -"für die Details)." +"werden. Bei relativen Importen bezeichnet ``1`` das aktuelle Paket, ``2`` " +"dessen übergeordnetes Paket und so weiter (Einzelheiten stehen in " +":pep:`328`)." #: ../../builtins/functions.rst:2370 msgid "" diff --git a/builtins/stdtypes.po b/builtins/stdtypes.po index 755a3362..12d748b4 100644 --- a/builtins/stdtypes.po +++ b/builtins/stdtypes.po @@ -1719,9 +1719,8 @@ msgstr "" "mittels :func:`int`." #: ../../builtins/stdtypes.rst:899 -#, fuzzy msgid "Iteration-related types" -msgstr "Iterator-Typen" +msgstr "Typen rund um die Iteration" #: ../../builtins/stdtypes.rst:907 msgid "" @@ -1737,9 +1736,8 @@ msgstr "" "Iterationsmethoden immer." #: ../../builtins/stdtypes.rst:913 -#, fuzzy msgid "Iterables" -msgstr "Literale" +msgstr "Iterierbare Objekte" #: ../../builtins/stdtypes.rst:915 msgid "" @@ -1771,9 +1769,8 @@ msgstr "" "Objekte in der Python/C-API." #: ../../builtins/stdtypes.rst:934 -#, fuzzy msgid "Iterators" -msgstr "Iterator" +msgstr "Iteratoren" #: ../../builtins/stdtypes.rst:936 msgid "" @@ -1834,7 +1831,6 @@ msgstr "" "einhalten, gelten als fehlerhaft." #: ../../builtins/stdtypes.rst:968 -#, fuzzy msgid "Generator types" msgstr "Generator-Typen" @@ -1912,7 +1908,6 @@ msgid "" msgstr "" #: ../../builtins/stdtypes.rst:1023 -#, fuzzy msgid "Generator iterators" msgstr "Generator-Typen" @@ -7049,13 +7044,12 @@ msgstr "" "von *size* abgeschnitten." #: ../../builtins/stdtypes.rst:3783 -#, fuzzy msgid "" "If the :class:`bytearray` needs to grow, all new bytes will be set to null " "bytes." msgstr "" "Wenn das :class:`bytearray` vergrößert werden muss, werden alle neuen Bytes " -"jenseits von *size* auf Nullbytes gesetzt." +"auf Nullbytes gesetzt." #: ../../builtins/stdtypes.rst:3787 msgid "This is equivalent to:" @@ -9765,7 +9759,6 @@ msgstr "" "akzeptieren." #: ../../builtins/stdtypes.rst:5595 -#, fuzzy msgid "" "Note, the *elem* argument to " "the :meth:`~object.__contains__`, :meth:`~set.remove`, " @@ -9774,9 +9767,8 @@ msgid "" msgstr "" "Beachte, dass das Argument *elem* für die " "Methoden :meth:`~object.__contains__`, :meth:`~set.remove` " -"und :meth:`~set.discard` eine Menge sein kann. Um die Suche nach einem " -"äquivalenten Frozenset zu unterstützen, wird aus *elem* vorübergehend ein " -"solches erstellt." +"und :meth:`~set.discard` eine Menge sein kann. In diesem Fall wird nach " +"einem äquivalenten Frozenset gesucht." #: ../../builtins/stdtypes.rst:5599 msgid "" @@ -9854,11 +9846,9 @@ msgstr "" "'jack', 4127: 'sjoerd'}``" #: ../../builtins/stdtypes.rst:5647 -#, fuzzy msgid "Use a dict comprehension: ``{x: x ** 2 for x in range(10)}``" msgstr "" -"Verwendung einer Dict-Comprehension: ``{}``, ``{x: x ** 2 for x in range(10)}" -"``" +"Verwendung einer Dict-Comprehension: ``{x: x ** 2 for x in range(10)}``" #: ../../builtins/stdtypes.rst:5648 msgid "" @@ -10258,14 +10248,13 @@ msgstr "" "die :ref:`Dokumentation zu View-Objekten `." #: ../../builtins/stdtypes.rst:5858 -#, fuzzy msgid "" "An equality comparison between two distinct ``dict.values()`` views will " "always return ``False``, even for views of the same dictionary::" msgstr "" -"Ein Gleichheitsvergleich zwischen einem ``dict.values()``-View und einem " -"anderen gibt immer ``False`` zurück. Dies gilt auch für den Vergleich von " -"``dict.values()`` mit sich selbst::" +"Ein Gleichheitsvergleich zwischen zwei verschiedenen " +"``dict.values()``-Views gibt immer ``False`` zurück, auch bei Views " +"desselben Dictionarys::" #: ../../builtins/stdtypes.rst:5861 msgid "" @@ -12971,34 +12960,29 @@ msgid "iteration over" msgstr "Iteration über" #: ../../builtins/stdtypes.rst:1019 -#, fuzzy msgid "generator" msgstr "Operator" #: ../../builtins/stdtypes.rst:1029 ../../builtins/stdtypes.rst:1098 #: ../../builtins/stdtypes.rst:1139 ../../builtins/stdtypes.rst:1216 -#, fuzzy msgid "exception" -msgstr "Beschreibung" +msgstr "Ausnahme" #: ../../builtins/stdtypes.rst:1029 -#, fuzzy msgid "StopIteration" -msgstr "Operation" +msgstr "StopIteration" #: ../../builtins/stdtypes.rst:1098 ../../builtins/stdtypes.rst:1216 -#, fuzzy msgid "GeneratorExit" -msgstr "Generator-Typen" +msgstr "GeneratorExit" #: ../../builtins/stdtypes.rst:1129 msgid "asynchronous-generator" msgstr "" #: ../../builtins/stdtypes.rst:1139 -#, fuzzy msgid "StopAsyncIteration" -msgstr "Operation" +msgstr "StopAsyncIteration" #: ../../builtins/stdtypes.rst:1276 ../../builtins/stdtypes.rst:5612 msgid "len" diff --git a/builtins/threadsafety.po b/builtins/threadsafety.po index 9e39d7a3..5081155d 100644 --- a/builtins/threadsafety.po +++ b/builtins/threadsafety.po @@ -817,20 +817,21 @@ msgstr "" "Sie durchlaufen alle übergebenen Iterables und tun Folgendes:" #: ../../builtins/threadsafety.rst:410 -#, fuzzy msgid "" ":meth:`set.update` and :meth:`set.union` lock both objects only when the " "other operand is a :class:`set`, :class:`frozenset`, or :class:`dict`." msgstr "" -"der andere Operand ein :class:`set`, :class:`frozenset` oder :class:`dict` " -"ist." +":meth:`set.update` und :meth:`set.union` sperren beide Objekte nur dann, " +"wenn der andere Operand ein :class:`set`, :class:`frozenset` oder " +":class:`dict` ist." #: ../../builtins/threadsafety.rst:412 -#, fuzzy msgid "" ":meth:`set.intersection` and :meth:`set.difference` always try to lock all " "objects." -msgstr ":meth:`set.intersection` und :meth:`set.difference` versuchen immer," +msgstr "" +":meth:`set.intersection` und :meth:`set.difference` versuchen immer, alle " +"Objekte zu sperren." #: ../../builtins/threadsafety.rst:415 msgid ":meth:`set.symmetric_difference` tries to lock both objects." @@ -845,20 +846,20 @@ msgstr "" "untereinander ebenfalls in einigen Punkten:" #: ../../builtins/threadsafety.rst:420 -#, fuzzy msgid "" ":meth:`set.difference_update` and :meth:`set.intersection_update` try to " "lock all objects one-by-one." msgstr "" -":meth:`set.difference_update` und :meth:`set.intersection_update` versuchen," +":meth:`set.difference_update` und :meth:`set.intersection_update` " +"versuchen, alle Objekte nacheinander zu sperren." #: ../../builtins/threadsafety.rst:422 -#, fuzzy msgid "" ":meth:`set.symmetric_difference_update` only locks the arguments if it is of " "type :class:`set`, :class:`frozenset`, or :class:`dict`." msgstr "" -":meth:`set.symmetric_difference_update` sperrt die Argumente nur, wenn sie" +":meth:`set.symmetric_difference_update` sperrt die Argumente nur, wenn sie " +"vom Typ :class:`set`, :class:`frozenset` oder :class:`dict` sind." #: ../../builtins/threadsafety.rst:425 msgid "The following methods always try to lock both objects:" From 5a05a482e61b653d6f7ab54cf535da92060d90c5 Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 11:47:52 +0100 Subject: [PATCH 2/9] Review and updated fuzzy entries after upstream sync. --- builtins/stdtypes.po | 184 ++++++++++++++++++++++++++++++++++++++++++- tutorial/errors.po | 3 +- 2 files changed, 183 insertions(+), 4 deletions(-) diff --git a/builtins/stdtypes.po b/builtins/stdtypes.po index 12d748b4..c6a44dd0 100644 --- a/builtins/stdtypes.po +++ b/builtins/stdtypes.po @@ -1841,12 +1841,19 @@ msgid "" "and :term:`generator iterators ` -- provide a convenient " "way to implement the iterator protocol." msgstr "" +"Die :term:`Generatoren ` von Python -- genauer gesagt " +":term:`Generatorfunktionen ` und " +":term:`Generator-Iteratoren ` -- bieten einen bequemen " +"Weg, das Iterator-Protokoll umzusetzen." #: ../../builtins/stdtypes.rst:975 msgid "" "A function that contains one or more :ref:`yield expressions ` is " "a :term:`generator function`. For example::" msgstr "" +"Eine Funktion, die einen oder mehrere :ref:`yield-Ausdrücke ` " +"enthält, ist eine :term:`Generatorfunktion `. Zum " +"Beispiel::" #: ../../builtins/stdtypes.rst:979 msgid "" @@ -1856,6 +1863,11 @@ msgid "" "... yield 2\n" "... yield 3" msgstr "" +">>> def count_to_three():\n" +"... yield 0\n" +"... yield 1\n" +"... yield 2\n" +"... yield 3" #: ../../builtins/stdtypes.rst:985 msgid "" @@ -1864,18 +1876,27 @@ msgid "" "calling a generator function returns a :ref:`generator iterator `::" msgstr "" +"Generatorfunktionen verhalten sich wie gewöhnliche " +":ref:`selbst definierte Funktionen ` (sie haben zum " +"Beispiel dieselben Attribute), nur dass der Aufruf einer Generatorfunktion " +"einen :ref:`Generator-Iterator ` zurückgibt::" #: ../../builtins/stdtypes.rst:990 msgid "" ">>> count_to_three()\n" "" msgstr "" +">>> count_to_three()\n" +"" #: ../../builtins/stdtypes.rst:993 msgid "" "Iterating a generator iterator executes code of the underlying generator " "function, producing each :keyword:`yield`\\ed value in turn::" msgstr "" +"Über einen Generator-Iterator zu iterieren führt den Code der zugrunde " +"liegenden Generatorfunktion aus und liefert nacheinander jeden mit " +":keyword:`yield` übergebenen Wert::" #: ../../builtins/stdtypes.rst:996 msgid "" @@ -1889,12 +1910,24 @@ msgid "" ">>> list(count_to_three())\n" "[0, 1, 2, 3]" msgstr "" +">>> for number in count_to_three():\n" +"... print(number)\n" +"0\n" +"1\n" +"2\n" +"3\n" +"\n" +">>> list(count_to_three())\n" +"[0, 1, 2, 3]" #: ../../builtins/stdtypes.rst:1006 msgid "" "One common use for generator functions is implementing " "the :meth:`~object.__iter__` method of custom iterable objects. For example::" msgstr "" +"Generatorfunktionen werden häufig dafür verwendet, die Methode " +":meth:`~object.__iter__` eigener iterierbarer Objekte umzusetzen. Zum " +"Beispiel::" #: ../../builtins/stdtypes.rst:1010 msgid "" @@ -1906,6 +1939,13 @@ msgid "" ">>> list(CardDeck())\n" "['three of clubs', 'ace of hearts']" msgstr "" +">>> class CardDeck:\n" +"... def __iter__(self):\n" +"... yield 'three of clubs'\n" +"... yield 'ace of hearts'\n" +"\n" +">>> list(CardDeck())\n" +"['three of clubs', 'ace of hearts']" #: ../../builtins/stdtypes.rst:1023 msgid "Generator iterators" @@ -1917,6 +1957,9 @@ msgid "" "iterators>`. Iterating them drives execution of the underlying generator " "function." msgstr "" +"Generator-Iteratoren setzen das :ref:`Iterator-Protokoll " +"` um. Über sie zu iterieren treibt die Ausführung der " +"zugrunde liegenden Generatorfunktion voran." #: ../../builtins/stdtypes.rst:1033 msgid "" @@ -1931,24 +1974,43 @@ msgid "" "yielding another value, :meth:`~generator.__next__` raises " "a :exc:`StopIteration` exception, signalling that iteration has completed." msgstr "" +"Startet die Ausführung einer Generatorfunktion oder setzt sie an " +"dem :ref:`yield-Ausdruck ` fort, an dem die Funktion gerade " +"angehalten ist. Wird eine Generatorfunktion über eine " +"Methode :meth:`~generator.__next__` fortgesetzt, ergibt der aktuelle " +"yield-Ausdruck immer :const:`None`. Die Ausführung läuft dann bis zum " +"nächsten yield-Ausdruck weiter, wo der Generator erneut angehalten wird, " +"und der Wert des Ausdrucks nach dem Schlüsselwort :keyword:`yield` wird an " +"den Aufrufer von :meth:`~generator.__next__` zurückgegeben. Endet der " +"Generator, ohne einen weiteren Wert zu liefern, löst " +":meth:`~generator.__next__` eine :exc:`StopIteration`-Ausnahme aus und " +"zeigt damit an, dass die Iteration abgeschlossen ist." #: ../../builtins/stdtypes.rst:1045 msgid "" "This method is normally called implicitly, for example by a :keyword:`for` " "loop, or by the built-in :func:`next` function." msgstr "" +"Diese Methode wird normalerweise stillschweigend aufgerufen, zum Beispiel " +"von einer :keyword:`for`-Schleife oder von der integrierten Funktion " +":func:`next`." #: ../../builtins/stdtypes.rst:1048 msgid "" "Generator iterators have a few more methods than generic iterators, which " "can be used to control the execution of the underlying generator function:" msgstr "" +"Generator-Iteratoren haben einige Methoden mehr als allgemeine Iteratoren. " +"Damit lässt sich die Ausführung der zugrunde liegenden Generatorfunktion " +"steuern:" #: ../../builtins/stdtypes.rst:1053 msgid "" "\"Sends\" a value into the generator function: the *value* argument becomes " "the result of the current yield expression." msgstr "" +"„Sendet“ einen Wert in die Generatorfunktion: Das Argument *value* wird zum " +"Ergebnis des aktuellen yield-Ausdrucks." #: ../../builtins/stdtypes.rst:1056 msgid "" @@ -1956,6 +2018,9 @@ msgid "" "the underlying function and either returns the next yielded value or " "raises :exc:`StopIteration`." msgstr "" +"Ansonsten verhält sich diese Methode wie :meth:`~generator.__next__`: Sie " +"setzt die zugrunde liegende Funktion fort und gibt entweder den nächsten " +"gelieferten Wert zurück oder löst :exc:`StopIteration` aus." #: ../../builtins/stdtypes.rst:1060 msgid "" @@ -1963,11 +2028,16 @@ msgid "" "with :const:`None` as the argument, because there is no current yield " "expression that could receive the value." msgstr "" +"Wird :meth:`send` aufgerufen, um den Generator zu starten, muss es " +"mit :const:`None` als Argument aufgerufen werden, weil es noch keinen " +"aktuellen yield-Ausdruck gibt, der den Wert aufnehmen könnte." #: ../../builtins/stdtypes.rst:1068 msgid "" "Raises an exception at the point where the generator is currently suspended." msgstr "" +"Löst eine Ausnahme an der Stelle aus, an der der Generator gerade " +"angehalten ist." #: ../../builtins/stdtypes.rst:1070 msgid "" @@ -1977,6 +2047,11 @@ msgid "" "passed-in exception, or raises a different exception, then that exception " "propagates to the caller." msgstr "" +"Ansonsten verhält sich diese Methode wie :meth:`~generator.__next__`: Sie " +"setzt die zugrunde liegende Funktion fort und gibt entweder den nächsten " +"gelieferten Wert zurück oder löst :exc:`StopIteration` aus. Fängt die " +"Generatorfunktion die übergebene Ausnahme nicht ab oder löst sie eine " +"andere Ausnahme aus, wird diese an den Aufrufer weitergegeben." #: ../../builtins/stdtypes.rst:1076 msgid "" @@ -1985,12 +2060,19 @@ msgid "" "will raise :exc:`StopIteration`) and the thrown exception is propagated " "to :meth:`throw`'s caller." msgstr "" +"Wird :meth:`throw` aufgerufen, um den Generator zu starten, endet der " +"Generator sofort (nachfolgende Aufrufe von :meth:`~generator.__next__` " +"lösen also :exc:`StopIteration` aus), und die geworfene Ausnahme wird an " +"den Aufrufer von :meth:`throw` weitergegeben." #: ../../builtins/stdtypes.rst:1081 ../../builtins/stdtypes.rst:1202 msgid "" "In typical use, this is called with a single argument, an exception " "instance, similar to the way the :keyword:`raise` keyword is used." msgstr "" +"Üblicherweise wird sie mit einem einzigen Argument aufgerufen, einer " +"Ausnahmeinstanz -- ähnlich wie das Schlüsselwort :keyword:`raise` verwendet " +"wird." #: ../../builtins/stdtypes.rst:1084 msgid "" @@ -2002,12 +2084,22 @@ msgid "" "any existing :attr:`~BaseException.__traceback__` attribute stored in " "*value* may be cleared." msgstr "" +"Zur Abwärtskompatibilität wird allerdings auch die zweite Signatur " +"unterstützt, die einer Vereinbarung aus älteren Python-Versionen folgt. Das " +"Argument *type* sollte eine Ausnahmeklasse sein und *value* eine " +"Ausnahmeinstanz. Ist *value* nicht angegeben, wird der Konstruktor von " +"*type* aufgerufen, um eine Instanz zu bekommen. Ist *traceback* angegeben, " +"wird es an der Ausnahme gesetzt, andernfalls wird ein vorhandenes " +"Attribut :attr:`~BaseException.__traceback__` in *value* möglicherweise " +"gelöscht." #: ../../builtins/stdtypes.rst:1095 ../../builtins/stdtypes.rst:1212 msgid "" "The second signature \\(type\\[, value\\[, traceback\\]\\]\\) is deprecated " "and may be removed in a future version of Python." msgstr "" +"Die zweite Signatur \\(type\\[, value\\[, traceback\\]\\]\\) ist veraltet " +"und wird in einer künftigen Python-Version möglicherweise entfernt." #: ../../builtins/stdtypes.rst:1102 msgid "" @@ -2015,6 +2107,9 @@ msgid "" "function is currently suspended (equivalent to calling " "``throw(GeneratorExit)``)." msgstr "" +"Löst an der Stelle, an der die Generatorfunktion gerade angehalten ist, " +"eine :exc:`GeneratorExit`-Ausnahme aus (gleichbedeutend mit dem Aufruf " +"``throw(GeneratorExit)``)." #: ../../builtins/stdtypes.rst:1105 msgid "" @@ -2025,18 +2120,30 @@ msgid "" "exception, it is propagated to the caller. If a generator returns a value " "upon being closed, that value is returned by :meth:`close`." msgstr "" +"Ist die Generatorfunktion bereits beendet (durch eine Ausnahme oder eine " +"gewöhnliche Rückkehr) oder löst sie :exc:`GeneratorExit` aus (indem sie die " +"Ausnahme nicht abfängt), gibt :meth:`close` :const:`None` zurück. Liefert " +"der Generator einen Wert, wird ein :exc:`RuntimeError` ausgelöst. Löst der " +"Generator irgendeine andere Ausnahme aus, wird sie an den Aufrufer " +"weitergegeben. Gibt ein Generator beim Schließen einen Wert zurück, wird " +"dieser Wert von :meth:`close` zurückgegeben." + #: ../../builtins/stdtypes.rst:1113 msgid "" "When a generator iterator is garbage collected before it has " "exited, :meth:`~generator.close` is called automatically." msgstr "" +"Wird ein Generator-Iterator von der Speicherbereinigung erfasst, bevor er " +"beendet ist, wird :meth:`~generator.close` automatisch aufgerufen." #: ../../builtins/stdtypes.rst:1118 msgid "" "If a generator returns a value upon being closed, the value is returned " "by :meth:`close`. Previously, it returned ``None``." msgstr "" +"Gibt ein Generator beim Schließen einen Wert zurück, wird dieser Wert " +"von :meth:`close` zurückgegeben. Vorher wurde ``None`` zurückgegeben." #: ../../builtins/stdtypes.rst:1123 msgid "" @@ -2045,10 +2152,14 @@ msgid "" "while one of these methods is already executing raises a :exc:`ValueError` " "exception." msgstr "" +"Eine der Generatormethoden " +"(:meth:`~generator.__next__`, :meth:`~generator.send`, :meth:`~generator.throw`, :meth:`~generator.close`) " +"aufzurufen, während eine dieser Methoden bereits läuft, löst " +"eine :exc:`ValueError`-Ausnahme aus." #: ../../builtins/stdtypes.rst:1133 msgid "Asynchronous generator iterators" -msgstr "" +msgstr "Asynchrone Generator-Iteratoren" #: ../../builtins/stdtypes.rst:1135 msgid "" @@ -2056,6 +2167,9 @@ msgid "" "which are used to control the execution of an asynchronous generator " "function." msgstr "" +"Dieser Unterabschnitt beschreibt die Methoden eines asynchronen " +"Generator-Iterators, mit denen die Ausführung einer asynchronen " +"Generatorfunktion gesteuert wird." #: ../../builtins/stdtypes.rst:1144 msgid "" @@ -2071,12 +2185,28 @@ msgid "" "awaitable instead raises a :exc:`StopAsyncIteration` exception, signalling " "that the asynchronous iteration has completed." msgstr "" +"Gibt ein :term:`abwartbares Objekt ` zurück, das bei seiner " +"Ausführung die asynchrone Generatorfunktion startet oder sie an " +"dem :ref:`yield-Ausdruck ` fortsetzt, an dem die Funktion gerade " +"angehalten ist. Wird eine asynchrone Generatorfunktion über eine " +"Methode :meth:`~agen.__anext__` fortgesetzt, ergibt der aktuelle " +"yield-Ausdruck im zurückgegebenen abwartbaren Objekt immer :const:`None`, " +"und dieses läuft bei seiner Ausführung bis zum nächsten yield-Ausdruck " +"weiter. Der Wert des Ausdrucks nach dem Schlüsselwort :keyword:`yield` ist " +"der Wert der :exc:`StopIteration`-Ausnahme, die die abschließende Coroutine " +"auslöst. Endet der asynchrone Generator, ohne einen weiteren Wert zu " +"liefern, löst das abwartbare Objekt stattdessen " +"eine :exc:`StopAsyncIteration`-Ausnahme aus und zeigt damit an, dass die " +"asynchrone Iteration abgeschlossen ist." #: ../../builtins/stdtypes.rst:1157 msgid "" "This method is normally called implicitly by an :keyword:`async for` loop, " "or by the built-in :func:`anext` function." msgstr "" +"Diese Methode wird normalerweise stillschweigend von " +"einer :keyword:`async for`-Schleife oder von der integrierten " +"Funktion :func:`anext` aufgerufen." #: ../../builtins/stdtypes.rst:1161 msgid "" @@ -2084,6 +2214,9 @@ msgid "" "asynchronous iterators, which can be used to control the execution of the " "underlying generator function:" msgstr "" +"Asynchrone Generator-Iteratoren haben einige Methoden mehr als allgemeine " +"asynchrone Iteratoren. Damit lässt sich die Ausführung der zugrunde " +"liegenden Generatorfunktion steuern:" #: ../../builtins/stdtypes.rst:1168 msgid "" @@ -2091,6 +2224,9 @@ msgid "" "asynchronous generator function: the *value* argument becomes the result of " "the current yield expression." msgstr "" +"Gibt ein abwartbares Objekt zurück, das bei seiner Ausführung einen Wert in " +"die zugrunde liegende asynchrone Generatorfunktion „sendet“: Das Argument " +"*value* wird zum Ergebnis des aktuellen yield-Ausdrucks." #: ../../builtins/stdtypes.rst:1172 msgid "" @@ -2099,6 +2235,11 @@ msgid "" "returns the next yielded value as the value of the " "raised :exc:`StopIteration`, or raises :exc:`StopAsyncIteration`." msgstr "" +"Ansonsten verhält sich diese Methode wie :meth:`~agen.__anext__`: Läuft das " +"zurückgegebene abwartbare Objekt, setzt es die zugrunde liegende Funktion " +"fort und gibt entweder den nächsten gelieferten Wert als Wert der " +"ausgelösten :exc:`StopIteration` zurück oder löst :exc:`StopAsyncIteration` " +"aus." #: ../../builtins/stdtypes.rst:1177 msgid "" @@ -2106,12 +2247,18 @@ msgid "" "called with :const:`None` as the argument, because there is no yield " "expression that could receive the value." msgstr "" +"Wird :meth:`asend` aufgerufen, um den asynchronen Generator zu starten, " +"muss es mit :const:`None` als Argument aufgerufen werden, weil es keinen " +"yield-Ausdruck gibt, der den Wert aufnehmen könnte." #: ../../builtins/stdtypes.rst:1186 msgid "" "Returns an awaitable that, when run, raises an exception at the point where " "the underlying asynchronous generator function is currently suspended." msgstr "" +"Gibt ein abwartbares Objekt zurück, das bei seiner Ausführung an der Stelle " +"eine Ausnahme auslöst, an der die zugrunde liegende asynchrone " +"Generatorfunktion gerade angehalten ist." #: ../../builtins/stdtypes.rst:1189 msgid "" @@ -2123,6 +2270,14 @@ msgid "" "different exception, then when the awaitable is run, that exception " "propagates to the caller of the awaitable." msgstr "" +"Ansonsten verhält sich diese Methode wie :meth:`~agen.__anext__`: Läuft das " +"zurückgegebene abwartbare Objekt, setzt es die zugrunde liegende Funktion " +"fort (mit einer ausgelösten Ausnahme) und gibt entweder den nächsten " +"gelieferten Wert als Wert der ausgelösten :exc:`StopIteration` zurück oder " +"löst :exc:`StopAsyncIteration` aus. Fängt die zugrunde liegende Funktion " +"die übergebene Ausnahme nicht ab oder löst sie eine andere Ausnahme aus, " +"wird diese bei der Ausführung des abwartbaren Objekts an dessen Aufrufer " +"weitergegeben." #: ../../builtins/stdtypes.rst:1197 msgid "" @@ -2131,6 +2286,11 @@ msgid "" "from :meth:`~agen.__anext__` will raise :exc:`StopAsyncIteration` when run) " "and the thrown exception is propagated to the awaitable's caller." msgstr "" +"Wird :meth:`~agen.athrow` aufgerufen, um den Generator zu starten, endet " +"der Generator, sobald das abwartbare Objekt läuft (nachfolgende Ergebnisse " +"von :meth:`~agen.__anext__` lösen bei ihrer Ausführung " +"also :exc:`StopAsyncIteration` aus), und die geworfene Ausnahme wird an den " +"Aufrufer des abwartbaren Objekts weitergegeben." #: ../../builtins/stdtypes.rst:1205 msgid "" @@ -2138,6 +2298,9 @@ msgid "" "exception instance is created from three arguments in the same way as " "in :meth:`generator.throw`." msgstr "" +"Zur Abwärtskompatibilität wird allerdings auch die zweite Signatur " +"unterstützt. Aus drei Argumenten wird dabei eine Ausnahmeinstanz erzeugt, " +"genauso wie bei :meth:`generator.throw`." #: ../../builtins/stdtypes.rst:1221 msgid "" @@ -2145,6 +2308,10 @@ msgid "" "the underlying asynchronous generator function at the point where it is " "currently suspended (equivalent to calling ``athrow(GeneratorExit)``)." msgstr "" +"Gibt ein abwartbares Objekt zurück, das bei seiner Ausführung an der " +"Stelle, an der die zugrunde liegende asynchrone Generatorfunktion gerade " +"angehalten ist, ein :exc:`GeneratorExit` hineinwirft (gleichbedeutend mit " +"dem Aufruf ``athrow(GeneratorExit)``)." #: ../../builtins/stdtypes.rst:1225 msgid "" @@ -2154,6 +2321,12 @@ msgid "" "further awaitables returned by subsequent calls to the asynchronous " "generator will raise a :exc:`StopAsyncIteration` exception." msgstr "" +"Endet die asynchrone Generatorfunktion daraufhin ordnungsgemäß, ist sie " +"bereits geschlossen oder löst sie :exc:`GeneratorExit` aus (indem sie die " +"Ausnahme nicht abfängt), löst das zurückgegebene abwartbare Objekt " +"eine :exc:`StopIteration`-Ausnahme aus. Alle weiteren abwartbaren Objekte, " +"die nachfolgende Aufrufe des asynchronen Generators zurückgeben, lösen " +"eine :exc:`StopAsyncIteration`-Ausnahme aus." #: ../../builtins/stdtypes.rst:1231 msgid "" @@ -2161,6 +2334,10 @@ msgid "" "raised by the awaitable. If the asynchronous generator raises any other " "exception, that exception is propagated to the caller of the awaitable." msgstr "" +"Liefert der asynchrone Generator einen Wert, löst das abwartbare Objekt " +"einen :exc:`RuntimeError` aus. Löst der asynchrone Generator irgendeine " +"andere Ausnahme aus, wird diese an den Aufrufer des abwartbaren Objekts " +"weitergegeben." #: ../../builtins/stdtypes.rst:1236 msgid "" @@ -2168,6 +2345,9 @@ msgid "" "normal exit, then further calls to :meth:`aclose` will return an awaitable " "that does nothing." msgstr "" +"Ist der asynchrone Generator bereits durch eine Ausnahme oder auf " +"gewöhnlichem Weg beendet, geben weitere Aufrufe von :meth:`aclose` ein " +"abwartbares Objekt zurück, das nichts tut." #: ../../builtins/stdtypes.rst:1244 msgid "Sequence Types --- :class:`list`, :class:`tuple`, :class:`range`" @@ -12978,7 +13158,7 @@ msgstr "GeneratorExit" #: ../../builtins/stdtypes.rst:1129 msgid "asynchronous-generator" -msgstr "" +msgstr "asynchronous-generator" #: ../../builtins/stdtypes.rst:1139 msgid "StopAsyncIteration" diff --git a/tutorial/errors.po b/tutorial/errors.po index 70341a2e..be43127a 100644 --- a/tutorial/errors.po +++ b/tutorial/errors.po @@ -1350,7 +1350,6 @@ msgstr "" "ausgelöst und abgefangen wurden, und zwar nach dem folgenden Muster:" #: ../../tutorial/errors.rst:610 -#, fuzzy msgid "" ">>> excs = []\n" ">>> for test in tests:\n" @@ -1364,7 +1363,7 @@ msgid "" "..." msgstr "" ">>> excs = []\n" -"... for test in tests:\n" +">>> for test in tests:\n" "... try:\n" "... test.run()\n" "... except Exception as e:\n" From f56535311ed0a2323d82a803506cab991eeb1a12 Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 11:54:35 +0100 Subject: [PATCH 3/9] Review and updated fuzzy entries after upstream sync. --- glossary.po | 13 +++++-------- reference/datamodel.po | 11 ++++++++--- reference/expressions.po | 8 +++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/glossary.po b/glossary.po index 135e5c9b..8e3231c1 100644 --- a/glossary.po +++ b/glossary.po @@ -1879,20 +1879,17 @@ msgstr "" "wird das GIL bei I/O-Operationen immer freigegeben." #: ../../glossary.rst:729 -#, fuzzy msgid "" "As of Python 3.13, the GIL can be disabled using the :option:`--disable-gil` " "build configuration. This feature enables improved performance for multi-" "threaded applications and makes it easier to use multi-core CPUs " "efficiently. For more details, see :pep:`703`." msgstr "" -"Ab Python 3.13 kann der GIL mithilfe der Build-Konfiguration :option:`--" -"disable-gil` deaktiviert werden. Nach dem Kompilieren von Python mit dieser " -"Option muss der Code mit der Option :option:`-X gil=0 <-X>` ausgeführt " -"werden oder nachdem die Umgebungsvariable :envvar:`PYTHON_GIL=0 " -"` gesetzt wurde. Diese Funktion ermöglicht eine verbesserte " -"Leistung für Multithread-Anwendungen und erleichtert die effiziente Nutzung " -"von Multi-Core-CPUs. Weitere Details findest du unter :pep:`703`." +"Ab Python 3.13 kann der GIL mithilfe der Build-Konfiguration " +":option:`--disable-gil` deaktiviert werden. Diese Funktion ermöglicht eine " +"verbesserte Leistung für Multithread-Anwendungen und erleichtert die " +"effiziente Nutzung von Multi-Core-CPUs. Weitere Details findest du " +"unter :pep:`703`." #: ../../glossary.rst:734 msgid "" diff --git a/reference/datamodel.po b/reference/datamodel.po index ca9e5613..66ed0a34 100644 --- a/reference/datamodel.po +++ b/reference/datamodel.po @@ -1402,13 +1402,12 @@ msgstr "" ":attr:`!__name__` ist der Name der Funktion. Siehe :attr:`function.__name__`." #: ../../reference/datamodel.rst:866 -#, fuzzy msgid "" ":attr:`!__self__` is the module object the function was defined in or " "``None`` if unavailable." msgstr "" -"Der Name des Moduls, in dem die Funktion definiert wurde, oder „ ``None`` “, " -"falls dieser nicht verfügbar ist." +":attr:`!__self__` ist das Modulobjekt, in dem die Funktion definiert wurde, " +"oder ``None``, wenn es nicht verfügbar ist." #: ../../reference/datamodel.rst:868 msgid "" @@ -2487,6 +2486,12 @@ msgid "" "position information. To create a modified copy of a code object, " "use :meth:`~codeobject.replace`." msgstr "" +"Ein :class:`bytes`-Objekt mit kodierten Angaben zur Position im Quelltext. " +"Das genaue Format ist ein Implementierungsdetail und kann sich zwischen " +"Python-Versionen ändern. Für den unterstützten Zugriff auf Zeilen- und " +"Positionsangaben verwende :meth:`~codeobject.co_lines` " +"und :meth:`~codeobject.co_positions`. Um eine veränderte Kopie eines " +"Code-Objekts zu erzeugen, verwende :meth:`~codeobject.replace`." #: ../../reference/datamodel.rst:1572 msgid "The required stack size of the code object" diff --git a/reference/expressions.po b/reference/expressions.po index ca78443b..2cc7598e 100644 --- a/reference/expressions.po +++ b/reference/expressions.po @@ -1158,7 +1158,6 @@ msgid "At run time, this corresponds roughly to calling this function::" msgstr "Zur Laufzeit entspricht das ungefähr dem Aufruf dieser Funktion::" #: ../../reference/expressions.rst:705 -#, fuzzy msgid "" "def make_lowercase_set(iterable):\n" " result = set()\n" @@ -1169,9 +1168,9 @@ msgid "" "make_lowercase_set(['a', 'A', 'b', 'C'])" msgstr "" "def make_lowercase_set(iterable):\n" -" result = set(iterable)\n" +" result = set()\n" " for x in iterable:\n" -" result.append(x.lower())\n" +" result.add(x.lower())\n" " return result\n" "\n" "make_lowercase_set(['a', 'A', 'b', 'C'])" @@ -1201,7 +1200,6 @@ msgid "At run time, this corresponds roughly to::" msgstr "Zur Laufzeit entspricht das ungefähr Folgendem::" #: ../../reference/expressions.rst:723 -#, fuzzy msgid "" "def make_dict_mapping_names_to_functions(iterable):\n" " result = {}\n" @@ -1217,7 +1215,7 @@ msgstr "" " result[func.__name__] = func\n" " return result\n" "\n" -"iterable([print, hex, any])" +"make_dict_mapping_names_to_functions([print, hex, any])" #: ../../reference/expressions.rst:731 msgid "" From 2dc18e5ffd73a74c20d4ab9ff9c65508b72ebd23 Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 14:17:01 +0100 Subject: [PATCH 4/9] Fix stale translations reported by check_markup --- _tools/pre_push_check.sh | 0 c-api/typeobj.po | 2357 +++++++++++++++++++++++++++++------ howto/abi3t-migration.po | 8 +- howto/functional.po | 6 +- library/argparse.po | 12 +- library/time.po | 92 +- library/tkinter.po | 58 +- library/turtle.po | 40 +- reference/compound_stmts.po | 3 +- using/cmdline.po | 10 +- using/ios.po | 12 +- using/windows.po | 13 +- whatsnew/3.10.po | 3 +- whatsnew/3.12.po | 18 +- whatsnew/3.13.po | 13 +- whatsnew/3.14.po | 16 +- 16 files changed, 2122 insertions(+), 539 deletions(-) mode change 100755 => 100644 _tools/pre_push_check.sh diff --git a/_tools/pre_push_check.sh b/_tools/pre_push_check.sh old mode 100755 new mode 100644 diff --git a/c-api/typeobj.po b/c-api/typeobj.po index 1624595d..a196f21d 100644 --- a/c-api/typeobj.po +++ b/c-api/typeobj.po @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: Python 3.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-11-01 00:10+0000\n" -"PO-Revision-Date: 2025-09-16 00:00+0000\n" +"PO-Revision-Date: 2026-11-01 13:00+0100\n" "Last-Translator: python-doc bot, 2025\n" "Language-Team: German (https://app.transifex.com/python-doc/teams/5390/de/)\n" "Language: de\n" @@ -23,7 +23,7 @@ msgstr "" #: ../../c-api/typeobj.rst:6 msgid "Type Object Structures" -msgstr "" +msgstr "Typobjekt-Strukturen" #: ../../c-api/typeobj.rst:8 msgid "" @@ -35,6 +35,13 @@ msgid "" "they are very important to the interpreter itself and to any extension " "module that implements new types." msgstr "" +"Eine der wichtigsten Strukturen des Python-Objektsystems ist vielleicht die " +"Struktur, die einen neuen Typ festlegt: die Struktur :c:type:`PyTypeObject`. " +"Typobjekte lassen sich mit allen ``PyObject_*``- oder ``PyType_*``-" +"Funktionen behandeln, bieten den meisten Python-Anwendungen aber wenig " +"Interessantes. Diese Objekte sind grundlegend dafür, wie Objekte sich " +"verhalten, und deshalb für den Interpreter selbst und für jedes " +"Erweiterungsmodul, das neue Typen umsetzt, sehr wichtig." #: ../../c-api/typeobj.rst:16 msgid "" @@ -45,6 +52,12 @@ msgid "" "detail in this section. The fields will be described in the order in which " "they occur in the structure." msgstr "" +"Typobjekte sind im Vergleich zu den meisten Standardtypen ziemlich groß. Der " +"Grund für die Größe ist, dass jedes Typobjekt eine große Anzahl von Werten " +"speichert, überwiegend C-Funktionszeiger, von denen jeder einen kleinen Teil " +"der Funktionalität des Typs umsetzt. Die Felder des Typobjekts werden in " +"diesem Abschnitt im Einzelnen untersucht. Sie werden in der Reihenfolge " +"beschrieben, in der sie in der Struktur vorkommen." #: ../../c-api/typeobj.rst:23 msgid "" @@ -52,59 +65,62 @@ msgid "" "section provides at-a-glance insight into the meaning and use " "of :c:type:`PyTypeObject`." msgstr "" +"Zusätzlich zur folgenden Kurzübersicht bietet der Abschnitt :ref:`typedef-" +"examples` einen schnellen Einblick in Bedeutung und Verwendung " +"von :c:type:`PyTypeObject`." #: ../../c-api/typeobj.rst:29 msgid "Quick Reference" -msgstr "" +msgstr "Kurzübersicht" #: ../../c-api/typeobj.rst:34 msgid "\"tp slots\"" -msgstr "" +msgstr "„tp-Slots“" #: ../../c-api/typeobj.rst:40 msgid "PyTypeObject Slot [#slots]_" -msgstr "" +msgstr "PyTypeObject-Slot [#slots]_" #: ../../c-api/typeobj.rst:40 ../../c-api/typeobj.rst:201 msgid ":ref:`Type `" -msgstr "" +msgstr ":ref:`Typ `" #: ../../c-api/typeobj.rst:40 msgid "special methods/attrs" -msgstr "" +msgstr "Spezialmethoden/-attribute" #: ../../c-api/typeobj.rst:40 msgid "Info [#cols]_" -msgstr "" +msgstr "Info [#cols]_" #: ../../c-api/typeobj.rst:42 msgid "O" -msgstr "" +msgstr "O" #: ../../c-api/typeobj.rst:42 msgid "T" -msgstr "" +msgstr "T" #: ../../c-api/typeobj.rst:42 msgid "D" -msgstr "" +msgstr "D" #: ../../c-api/typeobj.rst:42 msgid "I" -msgstr "" +msgstr "I" #: ../../c-api/typeobj.rst:44 msgid " :c:member:`~PyTypeObject.tp_name`" -msgstr "" +msgstr " :c:member:`~PyTypeObject.tp_name`" #: ../../c-api/typeobj.rst:44 ../../c-api/typeobj.rst:86 #: ../../c-api/typeobj.rst:372 ../../c-api/typeobj.rst:377 msgid "const char *" -msgstr "" +msgstr "const char *" #: ../../c-api/typeobj.rst:44 msgid "__name__" -msgstr "" +msgstr "__name__" #: ../../c-api/typeobj.rst:44 ../../c-api/typeobj.rst:46 #: ../../c-api/typeobj.rst:48 ../../c-api/typeobj.rst:50 @@ -123,11 +139,11 @@ msgstr "" #: ../../c-api/typeobj.rst:126 ../../c-api/typeobj.rst:128 #: ../../c-api/typeobj.rst:130 ../../c-api/typeobj.rst:146 msgid "X" -msgstr "" +msgstr "X" #: ../../c-api/typeobj.rst:46 msgid ":c:member:`~PyTypeObject.tp_basicsize`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_basicsize`" #: ../../c-api/typeobj.rst:46 ../../c-api/typeobj.rst:48 #: ../../c-api/typeobj.rst:52 ../../c-api/typeobj.rst:99 @@ -135,290 +151,290 @@ msgstr "" #: ../../c-api/typeobj.rst:417 ../../c-api/typeobj.rst:448 #: ../../c-api/typeobj.rst:453 msgid ":c:type:`Py_ssize_t`" -msgstr "" +msgstr ":c:type:`Py_ssize_t`" #: ../../c-api/typeobj.rst:48 msgid ":c:member:`~PyTypeObject.tp_itemsize`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_itemsize`" #: ../../c-api/typeobj.rst:50 msgid ":c:member:`~PyTypeObject.tp_dealloc`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_dealloc`" #: ../../c-api/typeobj.rst:50 ../../c-api/typeobj.rst:142 #: ../../c-api/typeobj.rst:146 ../../c-api/typeobj.rst:347 msgid ":c:type:`destructor`" -msgstr "" +msgstr ":c:type:`destructor`" #: ../../c-api/typeobj.rst:52 msgid ":c:member:`~PyTypeObject.tp_vectorcall_offset`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_vectorcall_offset`" #: ../../c-api/typeobj.rst:54 msgid "(:c:member:`~PyTypeObject.tp_getattr`)" -msgstr "" +msgstr "(:c:member:`~PyTypeObject.tp_getattr`)" #: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:371 msgid ":c:type:`getattrfunc`" -msgstr "" +msgstr ":c:type:`getattrfunc`" #: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:76 msgid "__getattribute__, __getattr__" -msgstr "" +msgstr "__getattribute__, __getattr__" #: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:57 #: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:76 #: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:88 #: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:92 msgid "G" -msgstr "" +msgstr "G" #: ../../c-api/typeobj.rst:57 msgid "(:c:member:`~PyTypeObject.tp_setattr`)" -msgstr "" +msgstr "(:c:member:`~PyTypeObject.tp_setattr`)" #: ../../c-api/typeobj.rst:57 ../../c-api/typeobj.rst:376 msgid ":c:type:`setattrfunc`" -msgstr "" +msgstr ":c:type:`setattrfunc`" #: ../../c-api/typeobj.rst:57 ../../c-api/typeobj.rst:79 msgid "__setattr__, __delattr__" -msgstr "" +msgstr "__setattr__, __delattr__" #: ../../c-api/typeobj.rst:60 msgid ":c:member:`~PyTypeObject.tp_as_async`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_as_async`" #: ../../c-api/typeobj.rst:60 msgid ":c:type:`PyAsyncMethods` *" -msgstr "" +msgstr ":c:type:`PyAsyncMethods` *" #: ../../c-api/typeobj.rst:60 ../../c-api/typeobj.rst:64 #: ../../c-api/typeobj.rst:66 ../../c-api/typeobj.rst:68 #: ../../c-api/typeobj.rst:82 msgid ":ref:`sub-slots`" -msgstr "" +msgstr ":ref:`sub-slots`" #: ../../c-api/typeobj.rst:60 ../../c-api/typeobj.rst:64 #: ../../c-api/typeobj.rst:66 ../../c-api/typeobj.rst:68 #: ../../c-api/typeobj.rst:82 msgid "%" -msgstr "" +msgstr "%" #: ../../c-api/typeobj.rst:62 msgid ":c:member:`~PyTypeObject.tp_repr`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_repr`" #: ../../c-api/typeobj.rst:62 ../../c-api/typeobj.rst:74 #: ../../c-api/typeobj.rst:369 msgid ":c:type:`reprfunc`" -msgstr "" +msgstr ":c:type:`reprfunc`" #: ../../c-api/typeobj.rst:62 msgid "__repr__" -msgstr "" +msgstr "__repr__" #: ../../c-api/typeobj.rst:64 msgid ":c:member:`~PyTypeObject.tp_as_number`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_as_number`" #: ../../c-api/typeobj.rst:64 msgid ":c:type:`PyNumberMethods` *" -msgstr "" +msgstr ":c:type:`PyNumberMethods` *" #: ../../c-api/typeobj.rst:66 msgid ":c:member:`~PyTypeObject.tp_as_sequence`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_as_sequence`" #: ../../c-api/typeobj.rst:66 msgid ":c:type:`PySequenceMethods` *" -msgstr "" +msgstr ":c:type:`PySequenceMethods` *" #: ../../c-api/typeobj.rst:68 msgid ":c:member:`~PyTypeObject.tp_as_mapping`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_as_mapping`" #: ../../c-api/typeobj.rst:68 msgid ":c:type:`PyMappingMethods` *" -msgstr "" +msgstr ":c:type:`PyMappingMethods` *" #: ../../c-api/typeobj.rst:70 msgid ":c:member:`~PyTypeObject.tp_hash`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_hash`" #: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:405 msgid ":c:type:`hashfunc`" -msgstr "" +msgstr ":c:type:`hashfunc`" #: ../../c-api/typeobj.rst:70 msgid "__hash__" -msgstr "" +msgstr "__hash__" #: ../../c-api/typeobj.rst:72 msgid ":c:member:`~PyTypeObject.tp_call`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_call`" #: ../../c-api/typeobj.rst:72 ../../c-api/typeobj.rst:237 #: ../../c-api/typeobj.rst:240 ../../c-api/typeobj.rst:441 msgid ":c:type:`ternaryfunc`" -msgstr "" +msgstr ":c:type:`ternaryfunc`" #: ../../c-api/typeobj.rst:72 msgid "__call__" -msgstr "" +msgstr "__call__" #: ../../c-api/typeobj.rst:74 msgid ":c:member:`~PyTypeObject.tp_str`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_str`" #: ../../c-api/typeobj.rst:74 msgid "__str__" -msgstr "" +msgstr "__str__" #: ../../c-api/typeobj.rst:76 msgid ":c:member:`~PyTypeObject.tp_getattro`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_getattro`" #: ../../c-api/typeobj.rst:76 ../../c-api/typeobj.rst:382 msgid ":c:type:`getattrofunc`" -msgstr "" +msgstr ":c:type:`getattrofunc`" #: ../../c-api/typeobj.rst:79 msgid ":c:member:`~PyTypeObject.tp_setattro`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_setattro`" #: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:387 msgid ":c:type:`setattrofunc`" -msgstr "" +msgstr ":c:type:`setattrofunc`" #: ../../c-api/typeobj.rst:82 msgid ":c:member:`~PyTypeObject.tp_as_buffer`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_as_buffer`" #: ../../c-api/typeobj.rst:82 msgid ":c:type:`PyBufferProcs` *" -msgstr "" +msgstr ":c:type:`PyBufferProcs` *" #: ../../c-api/typeobj.rst:84 msgid ":c:member:`~PyTypeObject.tp_flags`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_flags`" #: ../../c-api/typeobj.rst:84 msgid "unsigned long" -msgstr "" +msgstr "unsigned long" #: ../../c-api/typeobj.rst:84 ../../c-api/typeobj.rst:99 #: ../../c-api/typeobj.rst:113 ../../c-api/typeobj.rst:120 #: ../../c-api/typeobj.rst:124 ../../c-api/typeobj.rst:126 #: ../../c-api/typeobj.rst:128 msgid "?" -msgstr "" +msgstr "?" #: ../../c-api/typeobj.rst:86 msgid ":c:member:`~PyTypeObject.tp_doc`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_doc`" #: ../../c-api/typeobj.rst:86 msgid "__doc__" -msgstr "" +msgstr "__doc__" #: ../../c-api/typeobj.rst:88 msgid ":c:member:`~PyTypeObject.tp_traverse`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_traverse`" #: ../../c-api/typeobj.rst:88 ../../c-api/typeobj.rst:351 msgid ":c:type:`traverseproc`" -msgstr "" +msgstr ":c:type:`traverseproc`" #: ../../c-api/typeobj.rst:90 msgid ":c:member:`~PyTypeObject.tp_clear`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_clear`" #: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:130 #: ../../c-api/typeobj.rst:248 ../../c-api/typeobj.rst:430 msgid ":c:type:`inquiry`" -msgstr "" +msgstr ":c:type:`inquiry`" #: ../../c-api/typeobj.rst:92 msgid ":c:member:`~PyTypeObject.tp_richcompare`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_richcompare`" #: ../../c-api/typeobj.rst:92 ../../c-api/typeobj.rst:407 msgid ":c:type:`richcmpfunc`" -msgstr "" +msgstr ":c:type:`richcmpfunc`" #: ../../c-api/typeobj.rst:92 msgid "__lt__, __le__, __eq__, __ne__, __gt__, __ge__" -msgstr "" +msgstr "__lt__, __le__, __eq__, __ne__, __gt__, __ge__" #: ../../c-api/typeobj.rst:99 msgid "(:c:member:`~PyTypeObject.tp_weaklistoffset`)" -msgstr "" +msgstr "(:c:member:`~PyTypeObject.tp_weaklistoffset`)" #: ../../c-api/typeobj.rst:101 msgid ":c:member:`~PyTypeObject.tp_iter`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_iter`" #: ../../c-api/typeobj.rst:101 ../../c-api/typeobj.rst:413 msgid ":c:type:`getiterfunc`" -msgstr "" +msgstr ":c:type:`getiterfunc`" #: ../../c-api/typeobj.rst:101 msgid "__iter__" -msgstr "" +msgstr "__iter__" #: ../../c-api/typeobj.rst:103 msgid ":c:member:`~PyTypeObject.tp_iternext`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_iternext`" #: ../../c-api/typeobj.rst:103 ../../c-api/typeobj.rst:415 msgid ":c:type:`iternextfunc`" -msgstr "" +msgstr ":c:type:`iternextfunc`" #: ../../c-api/typeobj.rst:103 msgid "__next__" -msgstr "" +msgstr "__next__" #: ../../c-api/typeobj.rst:105 msgid ":c:member:`~PyTypeObject.tp_methods`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_methods`" #: ../../c-api/typeobj.rst:105 msgid ":c:type:`PyMethodDef` []" -msgstr "" +msgstr ":c:type:`PyMethodDef` []" #: ../../c-api/typeobj.rst:107 msgid ":c:member:`~PyTypeObject.tp_members`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_members`" #: ../../c-api/typeobj.rst:107 msgid ":c:type:`PyMemberDef` []" -msgstr "" +msgstr ":c:type:`PyMemberDef` []" #: ../../c-api/typeobj.rst:109 msgid ":c:member:`~PyTypeObject.tp_getset`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_getset`" #: ../../c-api/typeobj.rst:109 msgid ":c:type:`PyGetSetDef` []" -msgstr "" +msgstr ":c:type:`PyGetSetDef` []" #: ../../c-api/typeobj.rst:111 msgid ":c:member:`~PyTypeObject.tp_base`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_base`" #: ../../c-api/typeobj.rst:111 ../../c-api/typeobj.rst:342 #: ../../c-api/typeobj.rst:357 msgid ":c:type:`PyTypeObject` *" -msgstr "" +msgstr ":c:type:`PyTypeObject` *" #: ../../c-api/typeobj.rst:111 msgid "__base__" -msgstr "" +msgstr "__base__" #: ../../c-api/typeobj.rst:113 msgid ":c:member:`~PyTypeObject.tp_dict`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_dict`" #: ../../c-api/typeobj.rst:113 ../../c-api/typeobj.rst:132 #: ../../c-api/typeobj.rst:134 ../../c-api/typeobj.rst:136 @@ -447,148 +463,148 @@ msgstr "" #: ../../c-api/typeobj.rst:459 ../../c-api/typeobj.rst:463 #: ../../c-api/typeobj.rst:464 ../../c-api/typeobj.rst:465 msgid ":c:type:`PyObject` *" -msgstr "" +msgstr ":c:type:`PyObject` *" #: ../../c-api/typeobj.rst:113 msgid "__dict__" -msgstr "" +msgstr "__dict__" #: ../../c-api/typeobj.rst:115 msgid ":c:member:`~PyTypeObject.tp_descr_get`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_descr_get`" #: ../../c-api/typeobj.rst:115 ../../c-api/typeobj.rst:393 msgid ":c:type:`descrgetfunc`" -msgstr "" +msgstr ":c:type:`descrgetfunc`" #: ../../c-api/typeobj.rst:115 msgid "__get__" -msgstr "" +msgstr "__get__" #: ../../c-api/typeobj.rst:117 msgid ":c:member:`~PyTypeObject.tp_descr_set`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_descr_set`" #: ../../c-api/typeobj.rst:117 ../../c-api/typeobj.rst:399 msgid ":c:type:`descrsetfunc`" -msgstr "" +msgstr ":c:type:`descrsetfunc`" #: ../../c-api/typeobj.rst:117 msgid "__set__, __delete__" -msgstr "" +msgstr "__set__, __delete__" #: ../../c-api/typeobj.rst:120 msgid "(:c:member:`~PyTypeObject.tp_dictoffset`)" -msgstr "" +msgstr "(:c:member:`~PyTypeObject.tp_dictoffset`)" #: ../../c-api/typeobj.rst:122 msgid ":c:member:`~PyTypeObject.tp_init`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_init`" #: ../../c-api/typeobj.rst:122 ../../c-api/typeobj.rst:363 msgid ":c:type:`initproc`" -msgstr "" +msgstr ":c:type:`initproc`" #: ../../c-api/typeobj.rst:122 msgid "__init__" -msgstr "" +msgstr "__init__" #: ../../c-api/typeobj.rst:124 msgid ":c:member:`~PyTypeObject.tp_alloc`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_alloc`" #: ../../c-api/typeobj.rst:124 ../../c-api/typeobj.rst:342 msgid ":c:type:`allocfunc`" -msgstr "" +msgstr ":c:type:`allocfunc`" #: ../../c-api/typeobj.rst:126 msgid ":c:member:`~PyTypeObject.tp_new`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_new`" #: ../../c-api/typeobj.rst:126 ../../c-api/typeobj.rst:357 msgid ":c:type:`newfunc`" -msgstr "" +msgstr ":c:type:`newfunc`" #: ../../c-api/typeobj.rst:126 msgid "__new__" -msgstr "" +msgstr "__new__" #: ../../c-api/typeobj.rst:128 msgid ":c:member:`~PyTypeObject.tp_free`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_free`" #: ../../c-api/typeobj.rst:128 ../../c-api/typeobj.rst:349 msgid ":c:type:`freefunc`" -msgstr "" +msgstr ":c:type:`freefunc`" #: ../../c-api/typeobj.rst:130 msgid ":c:member:`~PyTypeObject.tp_is_gc`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_is_gc`" #: ../../c-api/typeobj.rst:132 msgid "<:c:member:`~PyTypeObject.tp_bases`>" -msgstr "" +msgstr "<:c:member:`~PyTypeObject.tp_bases`>" #: ../../c-api/typeobj.rst:132 msgid "__bases__" -msgstr "" +msgstr "__bases__" #: ../../c-api/typeobj.rst:132 ../../c-api/typeobj.rst:134 msgid "~" -msgstr "" +msgstr "~" #: ../../c-api/typeobj.rst:134 msgid "<:c:member:`~PyTypeObject.tp_mro`>" -msgstr "" +msgstr "<:c:member:`~PyTypeObject.tp_mro`>" #: ../../c-api/typeobj.rst:134 msgid "__mro__" -msgstr "" +msgstr "__mro__" #: ../../c-api/typeobj.rst:136 msgid "[:c:member:`~PyTypeObject.tp_cache`]" -msgstr "" +msgstr "[:c:member:`~PyTypeObject.tp_cache`]" #: ../../c-api/typeobj.rst:138 msgid "[:c:member:`~PyTypeObject.tp_subclasses`]" -msgstr "" +msgstr "[:c:member:`~PyTypeObject.tp_subclasses`]" #: ../../c-api/typeobj.rst:138 ../../c-api/typeobj.rst:279 #: ../../c-api/typeobj.rst:349 ../../c-api/typeobj.rst:353 msgid "void *" -msgstr "" +msgstr "void *" #: ../../c-api/typeobj.rst:138 msgid "__subclasses__" -msgstr "" +msgstr "__subclasses__" #: ../../c-api/typeobj.rst:140 msgid "[:c:member:`~PyTypeObject.tp_weaklist`]" -msgstr "" +msgstr "[:c:member:`~PyTypeObject.tp_weaklist`]" #: ../../c-api/typeobj.rst:142 msgid "(:c:member:`~PyTypeObject.tp_del`)" -msgstr "" +msgstr "(:c:member:`~PyTypeObject.tp_del`)" #: ../../c-api/typeobj.rst:144 msgid "[:c:member:`~PyTypeObject.tp_version_tag`]" -msgstr "" +msgstr "[:c:member:`~PyTypeObject.tp_version_tag`]" #: ../../c-api/typeobj.rst:144 msgid "unsigned int" -msgstr "" +msgstr "unsigned int" #: ../../c-api/typeobj.rst:146 msgid ":c:member:`~PyTypeObject.tp_finalize`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_finalize`" #: ../../c-api/typeobj.rst:146 msgid "__del__" -msgstr "" +msgstr "__del__" #: ../../c-api/typeobj.rst:148 msgid ":c:member:`~PyTypeObject.tp_vectorcall`" -msgstr "" +msgstr ":c:member:`~PyTypeObject.tp_vectorcall`" #: ../../c-api/typeobj.rst:148 msgid ":c:type:`vectorcallfunc`" @@ -596,47 +612,52 @@ msgstr ":c:type:`vectorcallfunc`" #: ../../c-api/typeobj.rst:150 msgid "[:c:member:`~PyTypeObject.tp_watched`]" -msgstr "" +msgstr "[:c:member:`~PyTypeObject.tp_watched`]" #: ../../c-api/typeobj.rst:150 msgid "unsigned char" -msgstr "" +msgstr "unsigned char" #: ../../c-api/typeobj.rst:155 msgid "" "**()**: A slot name in parentheses indicates it is (effectively) deprecated." msgstr "" +"**()**: Ein Slot-Name in Klammern bedeutet, dass er (praktisch) veraltet ist." #: ../../c-api/typeobj.rst:157 msgid "" "**<>**: Names in angle brackets should be initially set to ``NULL`` and " "treated as read-only." msgstr "" +"**<>**: Namen in spitzen Klammern sollten anfangs auf ``NULL`` gesetzt und " +"als nur lesbar behandelt werden." #: ../../c-api/typeobj.rst:160 msgid "**[]**: Names in square brackets are for internal use only." -msgstr "" +msgstr "**[]**: Namen in eckigen Klammern sind nur für den internen Gebrauch." #: ../../c-api/typeobj.rst:162 msgid "" "**** (as a prefix) means the field is required (must be non-``NULL``)." msgstr "" +"**** (als Präfix) bedeutet, dass das Feld erforderlich ist (darf nicht " +"``NULL`` sein)." #: ../../c-api/typeobj.rst:164 msgid "Columns:" -msgstr "" +msgstr "Spalten:" #: ../../c-api/typeobj.rst:166 msgid "**\"O\"**: set on :c:data:`PyBaseObject_Type`" -msgstr "" +msgstr "**\"O\"**: an :c:data:`PyBaseObject_Type` gesetzt" #: ../../c-api/typeobj.rst:168 msgid "**\"T\"**: set on :c:data:`PyType_Type`" -msgstr "" +msgstr "**\"T\"**: an :c:data:`PyType_Type` gesetzt" #: ../../c-api/typeobj.rst:170 msgid "**\"D\"**: default (if slot is set to ``NULL``)" -msgstr "" +msgstr "**\"D\"**: Vorgabe (wenn der Slot auf ``NULL`` gesetzt ist)" #: ../../c-api/typeobj.rst:172 msgid "" @@ -646,10 +667,15 @@ msgid "" "\n" "Also see the inheritance column (\"I\")." msgstr "" +"X - PyType_Ready setzt diesen Wert, wenn er NULL ist\n" +"~ - PyType_Ready setzt diesen Wert immer (er sollte NULL sein)\n" +"? - PyType_Ready setzt diesen Wert je nach anderen Slots\n" +"\n" +"Siehe auch die Vererbungsspalte (\"I\")." #: ../../c-api/typeobj.rst:180 msgid "**\"I\"**: inheritance" -msgstr "" +msgstr "**\"I\"**: Vererbung" #: ../../c-api/typeobj.rst:182 msgid "" @@ -660,28 +686,36 @@ msgid "" "description\n" "? - it's complicated; see the slot's description" msgstr "" +"X - Typ-Slot wird über *PyType_Ready* vererbt, wenn er mit einem *NULL*-Wert " +"festgelegt ist\n" +"% - die Slots der Unterstruktur werden einzeln vererbt\n" +"G - vererbt, aber nur in Verbindung mit anderen Slots -- siehe die " +"Beschreibung des Slots\n" +"? - es ist kompliziert -- siehe die Beschreibung des Slots" #: ../../c-api/typeobj.rst:189 msgid "" "Note that some slots are effectively inherited through the normal attribute " "lookup chain." msgstr "" +"Beachte, dass manche Slots praktisch über die normale Kette der " +"Attributsuche vererbt werden." #: ../../c-api/typeobj.rst:195 msgid "sub-slots" -msgstr "" +msgstr "Unter-Slots" #: ../../c-api/typeobj.rst:201 msgid "Slot" -msgstr "" +msgstr "Slot" #: ../../c-api/typeobj.rst:201 msgid "special methods" -msgstr "" +msgstr "Spezialmethoden" #: ../../c-api/typeobj.rst:204 msgid ":c:member:`~PyAsyncMethods.am_await`" -msgstr "" +msgstr ":c:member:`~PyAsyncMethods.am_await`" #: ../../c-api/typeobj.rst:204 ../../c-api/typeobj.rst:206 #: ../../c-api/typeobj.rst:208 ../../c-api/typeobj.rst:242 @@ -690,39 +724,39 @@ msgstr "" #: ../../c-api/typeobj.rst:281 ../../c-api/typeobj.rst:291 #: ../../c-api/typeobj.rst:432 msgid ":c:type:`unaryfunc`" -msgstr "" +msgstr ":c:type:`unaryfunc`" #: ../../c-api/typeobj.rst:204 msgid "__await__" -msgstr "" +msgstr "__await__" #: ../../c-api/typeobj.rst:206 msgid ":c:member:`~PyAsyncMethods.am_aiter`" -msgstr "" +msgstr ":c:member:`~PyAsyncMethods.am_aiter`" #: ../../c-api/typeobj.rst:206 msgid "__aiter__" -msgstr "" +msgstr "__aiter__" #: ../../c-api/typeobj.rst:208 msgid ":c:member:`~PyAsyncMethods.am_anext`" -msgstr "" +msgstr ":c:member:`~PyAsyncMethods.am_anext`" #: ../../c-api/typeobj.rst:208 msgid "__anext__" -msgstr "" +msgstr "__anext__" #: ../../c-api/typeobj.rst:210 msgid ":c:member:`~PyAsyncMethods.am_send`" -msgstr "" +msgstr ":c:member:`~PyAsyncMethods.am_send`" #: ../../c-api/typeobj.rst:210 msgid ":c:type:`sendfunc`" -msgstr "" +msgstr ":c:type:`sendfunc`" #: ../../c-api/typeobj.rst:214 msgid ":c:member:`~PyNumberMethods.nb_add`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_add`" #: ../../c-api/typeobj.rst:214 ../../c-api/typeobj.rst:217 #: ../../c-api/typeobj.rst:219 ../../c-api/typeobj.rst:222 @@ -740,430 +774,430 @@ msgstr "" #: ../../c-api/typeobj.rst:311 ../../c-api/typeobj.rst:322 #: ../../c-api/typeobj.rst:436 msgid ":c:type:`binaryfunc`" -msgstr "" +msgstr ":c:type:`binaryfunc`" #: ../../c-api/typeobj.rst:214 msgid "__add__ __radd__" -msgstr "" +msgstr "__add__ __radd__" #: ../../c-api/typeobj.rst:217 msgid ":c:member:`~PyNumberMethods.nb_inplace_add`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_add`" #: ../../c-api/typeobj.rst:217 ../../c-api/typeobj.rst:322 msgid "__iadd__" -msgstr "" +msgstr "__iadd__" #: ../../c-api/typeobj.rst:219 msgid ":c:member:`~PyNumberMethods.nb_subtract`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_subtract`" #: ../../c-api/typeobj.rst:219 msgid "__sub__ __rsub__" -msgstr "" +msgstr "__sub__ __rsub__" #: ../../c-api/typeobj.rst:222 msgid ":c:member:`~PyNumberMethods.nb_inplace_subtract`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_subtract`" #: ../../c-api/typeobj.rst:222 msgid "__isub__" -msgstr "" +msgstr "__isub__" #: ../../c-api/typeobj.rst:224 msgid ":c:member:`~PyNumberMethods.nb_multiply`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_multiply`" #: ../../c-api/typeobj.rst:224 msgid "__mul__ __rmul__" -msgstr "" +msgstr "__mul__ __rmul__" #: ../../c-api/typeobj.rst:227 msgid ":c:member:`~PyNumberMethods.nb_inplace_multiply`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_multiply`" #: ../../c-api/typeobj.rst:227 ../../c-api/typeobj.rst:324 msgid "__imul__" -msgstr "" +msgstr "__imul__" #: ../../c-api/typeobj.rst:229 msgid ":c:member:`~PyNumberMethods.nb_remainder`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_remainder`" #: ../../c-api/typeobj.rst:229 msgid "__mod__ __rmod__" -msgstr "" +msgstr "__mod__ __rmod__" #: ../../c-api/typeobj.rst:232 msgid ":c:member:`~PyNumberMethods.nb_inplace_remainder`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_remainder`" #: ../../c-api/typeobj.rst:232 msgid "__imod__" -msgstr "" +msgstr "__imod__" #: ../../c-api/typeobj.rst:234 msgid ":c:member:`~PyNumberMethods.nb_divmod`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_divmod`" #: ../../c-api/typeobj.rst:234 msgid "__divmod__ __rdivmod__" -msgstr "" +msgstr "__divmod__ __rdivmod__" #: ../../c-api/typeobj.rst:237 msgid ":c:member:`~PyNumberMethods.nb_power`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_power`" #: ../../c-api/typeobj.rst:237 msgid "__pow__ __rpow__" -msgstr "" +msgstr "__pow__ __rpow__" #: ../../c-api/typeobj.rst:240 msgid ":c:member:`~PyNumberMethods.nb_inplace_power`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_power`" #: ../../c-api/typeobj.rst:240 msgid "__ipow__" -msgstr "" +msgstr "__ipow__" #: ../../c-api/typeobj.rst:242 msgid ":c:member:`~PyNumberMethods.nb_negative`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_negative`" #: ../../c-api/typeobj.rst:242 msgid "__neg__" -msgstr "" +msgstr "__neg__" #: ../../c-api/typeobj.rst:244 msgid ":c:member:`~PyNumberMethods.nb_positive`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_positive`" #: ../../c-api/typeobj.rst:244 msgid "__pos__" -msgstr "" +msgstr "__pos__" #: ../../c-api/typeobj.rst:246 msgid ":c:member:`~PyNumberMethods.nb_absolute`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_absolute`" #: ../../c-api/typeobj.rst:246 msgid "__abs__" -msgstr "" +msgstr "__abs__" #: ../../c-api/typeobj.rst:248 msgid ":c:member:`~PyNumberMethods.nb_bool`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_bool`" #: ../../c-api/typeobj.rst:248 msgid "__bool__" -msgstr "" +msgstr "__bool__" #: ../../c-api/typeobj.rst:250 msgid ":c:member:`~PyNumberMethods.nb_invert`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_invert`" #: ../../c-api/typeobj.rst:250 msgid "__invert__" -msgstr "" +msgstr "__invert__" #: ../../c-api/typeobj.rst:252 msgid ":c:member:`~PyNumberMethods.nb_lshift`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_lshift`" #: ../../c-api/typeobj.rst:252 msgid "__lshift__ __rlshift__" -msgstr "" +msgstr "__lshift__ __rlshift__" #: ../../c-api/typeobj.rst:255 msgid ":c:member:`~PyNumberMethods.nb_inplace_lshift`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_lshift`" #: ../../c-api/typeobj.rst:255 msgid "__ilshift__" -msgstr "" +msgstr "__ilshift__" #: ../../c-api/typeobj.rst:257 msgid ":c:member:`~PyNumberMethods.nb_rshift`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_rshift`" #: ../../c-api/typeobj.rst:257 msgid "__rshift__ __rrshift__" -msgstr "" +msgstr "__rshift__ __rrshift__" #: ../../c-api/typeobj.rst:260 msgid ":c:member:`~PyNumberMethods.nb_inplace_rshift`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_rshift`" #: ../../c-api/typeobj.rst:260 msgid "__irshift__" -msgstr "" +msgstr "__irshift__" #: ../../c-api/typeobj.rst:262 msgid ":c:member:`~PyNumberMethods.nb_and`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_and`" #: ../../c-api/typeobj.rst:262 msgid "__and__ __rand__" -msgstr "" +msgstr "__and__ __rand__" #: ../../c-api/typeobj.rst:265 msgid ":c:member:`~PyNumberMethods.nb_inplace_and`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_and`" #: ../../c-api/typeobj.rst:265 msgid "__iand__" -msgstr "" +msgstr "__iand__" #: ../../c-api/typeobj.rst:267 msgid ":c:member:`~PyNumberMethods.nb_xor`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_xor`" #: ../../c-api/typeobj.rst:267 msgid "__xor__ __rxor__" -msgstr "" +msgstr "__xor__ __rxor__" #: ../../c-api/typeobj.rst:270 msgid ":c:member:`~PyNumberMethods.nb_inplace_xor`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_xor`" #: ../../c-api/typeobj.rst:270 msgid "__ixor__" -msgstr "" +msgstr "__ixor__" #: ../../c-api/typeobj.rst:272 msgid ":c:member:`~PyNumberMethods.nb_or`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_or`" #: ../../c-api/typeobj.rst:272 msgid "__or__ __ror__" -msgstr "" +msgstr "__or__ __ror__" #: ../../c-api/typeobj.rst:275 msgid ":c:member:`~PyNumberMethods.nb_inplace_or`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_or`" #: ../../c-api/typeobj.rst:275 msgid "__ior__" -msgstr "" +msgstr "__ior__" #: ../../c-api/typeobj.rst:277 msgid ":c:member:`~PyNumberMethods.nb_int`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_int`" #: ../../c-api/typeobj.rst:277 msgid "__int__" -msgstr "" +msgstr "__int__" #: ../../c-api/typeobj.rst:279 msgid ":c:member:`~PyNumberMethods.nb_reserved`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_reserved`" #: ../../c-api/typeobj.rst:281 msgid ":c:member:`~PyNumberMethods.nb_float`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_float`" #: ../../c-api/typeobj.rst:281 msgid "__float__" -msgstr "" +msgstr "__float__" #: ../../c-api/typeobj.rst:283 msgid ":c:member:`~PyNumberMethods.nb_floor_divide`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_floor_divide`" #: ../../c-api/typeobj.rst:283 msgid "__floordiv__" -msgstr "" +msgstr "__floordiv__" #: ../../c-api/typeobj.rst:285 msgid ":c:member:`~PyNumberMethods.nb_inplace_floor_divide`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_floor_divide`" #: ../../c-api/typeobj.rst:285 msgid "__ifloordiv__" -msgstr "" +msgstr "__ifloordiv__" #: ../../c-api/typeobj.rst:287 msgid ":c:member:`~PyNumberMethods.nb_true_divide`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_true_divide`" #: ../../c-api/typeobj.rst:287 msgid "__truediv__" -msgstr "" +msgstr "__truediv__" #: ../../c-api/typeobj.rst:289 msgid ":c:member:`~PyNumberMethods.nb_inplace_true_divide`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_true_divide`" #: ../../c-api/typeobj.rst:289 msgid "__itruediv__" -msgstr "" +msgstr "__itruediv__" #: ../../c-api/typeobj.rst:291 msgid ":c:member:`~PyNumberMethods.nb_index`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_index`" #: ../../c-api/typeobj.rst:291 msgid "__index__" -msgstr "" +msgstr "__index__" #: ../../c-api/typeobj.rst:293 msgid ":c:member:`~PyNumberMethods.nb_matrix_multiply`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_matrix_multiply`" #: ../../c-api/typeobj.rst:293 msgid "__matmul__ __rmatmul__" -msgstr "" +msgstr "__matmul__ __rmatmul__" #: ../../c-api/typeobj.rst:296 msgid ":c:member:`~PyNumberMethods.nb_inplace_matrix_multiply`" -msgstr "" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_matrix_multiply`" #: ../../c-api/typeobj.rst:296 msgid "__imatmul__" -msgstr "" +msgstr "__imatmul__" #: ../../c-api/typeobj.rst:300 msgid ":c:member:`~PyMappingMethods.mp_length`" -msgstr "" +msgstr ":c:member:`~PyMappingMethods.mp_length`" #: ../../c-api/typeobj.rst:300 ../../c-api/typeobj.rst:309 #: ../../c-api/typeobj.rst:417 msgid ":c:type:`lenfunc`" -msgstr "" +msgstr ":c:type:`lenfunc`" #: ../../c-api/typeobj.rst:300 ../../c-api/typeobj.rst:309 msgid "__len__" -msgstr "" +msgstr "__len__" #: ../../c-api/typeobj.rst:302 msgid ":c:member:`~PyMappingMethods.mp_subscript`" -msgstr "" +msgstr ":c:member:`~PyMappingMethods.mp_subscript`" #: ../../c-api/typeobj.rst:302 ../../c-api/typeobj.rst:315 msgid "__getitem__" -msgstr "" +msgstr "__getitem__" #: ../../c-api/typeobj.rst:304 msgid ":c:member:`~PyMappingMethods.mp_ass_subscript`" -msgstr "" +msgstr ":c:member:`~PyMappingMethods.mp_ass_subscript`" #: ../../c-api/typeobj.rst:304 ../../c-api/typeobj.rst:463 msgid ":c:type:`objobjargproc`" -msgstr "" +msgstr ":c:type:`objobjargproc`" #: ../../c-api/typeobj.rst:304 msgid "__setitem__, __delitem__" -msgstr "" +msgstr "__setitem__, __delitem__" #: ../../c-api/typeobj.rst:309 msgid ":c:member:`~PySequenceMethods.sq_length`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_length`" #: ../../c-api/typeobj.rst:311 msgid ":c:member:`~PySequenceMethods.sq_concat`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_concat`" #: ../../c-api/typeobj.rst:311 msgid "__add__" -msgstr "" +msgstr "__add__" #: ../../c-api/typeobj.rst:313 msgid ":c:member:`~PySequenceMethods.sq_repeat`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_repeat`" #: ../../c-api/typeobj.rst:313 ../../c-api/typeobj.rst:315 #: ../../c-api/typeobj.rst:324 ../../c-api/typeobj.rst:447 msgid ":c:type:`ssizeargfunc`" -msgstr "" +msgstr ":c:type:`ssizeargfunc`" #: ../../c-api/typeobj.rst:313 msgid "__mul__" -msgstr "" +msgstr "__mul__" #: ../../c-api/typeobj.rst:315 msgid ":c:member:`~PySequenceMethods.sq_item`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_item`" #: ../../c-api/typeobj.rst:317 msgid ":c:member:`~PySequenceMethods.sq_ass_item`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_ass_item`" #: ../../c-api/typeobj.rst:317 ../../c-api/typeobj.rst:452 msgid ":c:type:`ssizeobjargproc`" -msgstr "" +msgstr ":c:type:`ssizeobjargproc`" #: ../../c-api/typeobj.rst:317 msgid "__setitem__ __delitem__" -msgstr "" +msgstr "__setitem__ __delitem__" #: ../../c-api/typeobj.rst:320 msgid ":c:member:`~PySequenceMethods.sq_contains`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_contains`" #: ../../c-api/typeobj.rst:320 ../../c-api/typeobj.rst:458 msgid ":c:type:`objobjproc`" -msgstr "" +msgstr ":c:type:`objobjproc`" #: ../../c-api/typeobj.rst:320 msgid "__contains__" -msgstr "" +msgstr "__contains__" #: ../../c-api/typeobj.rst:322 msgid ":c:member:`~PySequenceMethods.sq_inplace_concat`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_inplace_concat`" #: ../../c-api/typeobj.rst:324 msgid ":c:member:`~PySequenceMethods.sq_inplace_repeat`" -msgstr "" +msgstr ":c:member:`~PySequenceMethods.sq_inplace_repeat`" #: ../../c-api/typeobj.rst:328 msgid ":c:member:`~PyBufferProcs.bf_getbuffer`" -msgstr "" +msgstr ":c:member:`~PyBufferProcs.bf_getbuffer`" #: ../../c-api/typeobj.rst:328 msgid ":c:func:`getbufferproc`" -msgstr "" +msgstr ":c:func:`getbufferproc`" #: ../../c-api/typeobj.rst:328 msgid "__buffer__" -msgstr "" +msgstr "__buffer__" #: ../../c-api/typeobj.rst:330 msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`" -msgstr "" +msgstr ":c:member:`~PyBufferProcs.bf_releasebuffer`" #: ../../c-api/typeobj.rst:330 msgid ":c:func:`releasebufferproc`" -msgstr "" +msgstr ":c:func:`releasebufferproc`" #: ../../c-api/typeobj.rst:330 msgid "__release_ buffer\\__" -msgstr "" +msgstr "__release_ buffer\\__" #: ../../c-api/typeobj.rst:337 msgid "slot typedefs" -msgstr "" +msgstr "Slot-Typedefs" #: ../../c-api/typeobj.rst:340 msgid "typedef" -msgstr "" +msgstr "typedef" #: ../../c-api/typeobj.rst:340 msgid "Parameter Types" -msgstr "" +msgstr "Parametertypen" #: ../../c-api/typeobj.rst:340 msgid "Return Type" -msgstr "" +msgstr "Rückgabetyp" #: ../../c-api/typeobj.rst:347 ../../c-api/typeobj.rst:349 #: ../../c-api/typeobj.rst:425 msgid "void" -msgstr "" +msgstr "void" #: ../../c-api/typeobj.rst:352 msgid ":c:type:`visitproc`" -msgstr "" +msgstr ":c:type:`visitproc`" #: ../../c-api/typeobj.rst:351 ../../c-api/typeobj.rst:363 #: ../../c-api/typeobj.rst:376 ../../c-api/typeobj.rst:387 @@ -1172,31 +1206,31 @@ msgstr "" #: ../../c-api/typeobj.rst:430 ../../c-api/typeobj.rst:452 #: ../../c-api/typeobj.rst:458 ../../c-api/typeobj.rst:463 msgid "int" -msgstr "" +msgstr "int" #: ../../c-api/typeobj.rst:405 msgid "Py_hash_t" -msgstr "" +msgstr "Py_hash_t" #: ../../c-api/typeobj.rst:419 msgid ":c:type:`getbufferproc`" -msgstr "" +msgstr ":c:type:`getbufferproc`" #: ../../c-api/typeobj.rst:420 ../../c-api/typeobj.rst:426 msgid ":c:type:`Py_buffer` *" -msgstr "" +msgstr ":c:type:`Py_buffer` *" #: ../../c-api/typeobj.rst:425 msgid ":c:type:`releasebufferproc`" -msgstr "" +msgstr ":c:type:`releasebufferproc`" #: ../../c-api/typeobj.rst:470 msgid "See :ref:`slot-typedefs` below for more detail." -msgstr "" +msgstr "Mehr dazu steht unten unter :ref:`slot-typedefs`." #: ../../c-api/typeobj.rst:474 msgid "PyTypeObject Definition" -msgstr "" +msgstr "Definition von PyTypeObject" #: ../../c-api/typeobj.rst:476 msgid "" @@ -1204,6 +1238,8 @@ msgid "" "in :file:`Include/cpython/object.h`. For convenience of reference, this " "repeats the definition found there:" msgstr "" +"Die Strukturdefinition für :c:type:`PyTypeObject` steht in :file:`Include/" +"cpython/object.h`. Der Bequemlichkeit halber ist sie hier wiederholt:" #: ../../c-api/typeobj.rst:482 msgid "" @@ -1303,10 +1339,105 @@ msgid "" " uint16_t tp_versions_used;\n" "} PyTypeObject;\n" msgstr "" +"typedef struct _typeobject {\n" +" PyObject_VAR_HEAD\n" +" const char *tp_name; /* For printing, in format \".\" */\n" +" Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */\n" +"\n" +" /* Methods to implement standard operations */\n" +"\n" +" destructor tp_dealloc;\n" +" Py_ssize_t tp_vectorcall_offset;\n" +" getattrfunc tp_getattr;\n" +" setattrfunc tp_setattr;\n" +" PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)\n" +" or tp_reserved (Python 3) */\n" +" reprfunc tp_repr;\n" +"\n" +" /* Method suites for standard classes */\n" +"\n" +" PyNumberMethods *tp_as_number;\n" +" PySequenceMethods *tp_as_sequence;\n" +" PyMappingMethods *tp_as_mapping;\n" +"\n" +" /* More standard operations (here for binary compatibility) */\n" +"\n" +" hashfunc tp_hash;\n" +" ternaryfunc tp_call;\n" +" reprfunc tp_str;\n" +" getattrofunc tp_getattro;\n" +" setattrofunc tp_setattro;\n" +"\n" +" /* Functions to access object as input/output buffer */\n" +" PyBufferProcs *tp_as_buffer;\n" +"\n" +" /* Flags to define presence of optional/expanded features */\n" +" unsigned long tp_flags;\n" +"\n" +" const char *tp_doc; /* Documentation string */\n" +"\n" +" /* Assigned meaning in release 2.0 */\n" +" /* call function for all accessible objects */\n" +" traverseproc tp_traverse;\n" +"\n" +" /* delete references to contained objects */\n" +" inquiry tp_clear;\n" +"\n" +" /* Assigned meaning in release 2.1 */\n" +" /* rich comparisons */\n" +" richcmpfunc tp_richcompare;\n" +"\n" +" /* weak reference enabler */\n" +" Py_ssize_t tp_weaklistoffset;\n" +"\n" +" /* Iterators */\n" +" getiterfunc tp_iter;\n" +" iternextfunc tp_iternext;\n" +"\n" +" /* Attribute descriptor and subclassing stuff */\n" +" PyMethodDef *tp_methods;\n" +" PyMemberDef *tp_members;\n" +" PyGetSetDef *tp_getset;\n" +" // Strong reference on a heap type, borrowed reference on a static type\n" +" PyTypeObject *tp_base;\n" +" PyObject *tp_dict;\n" +" descrgetfunc tp_descr_get;\n" +" descrsetfunc tp_descr_set;\n" +" Py_ssize_t tp_dictoffset;\n" +" initproc tp_init;\n" +" allocfunc tp_alloc;\n" +" newfunc tp_new;\n" +" freefunc tp_free; /* Low-level free-memory routine */\n" +" inquiry tp_is_gc; /* For PyObject_IS_GC */\n" +" PyObject *tp_bases;\n" +" PyObject *tp_mro; /* method resolution order */\n" +" PyObject *tp_cache; /* no longer used */\n" +" void *tp_subclasses; /* for static builtin types this is an index */\n" +" PyObject *tp_weaklist; /* not used for static builtin types */\n" +" destructor tp_del;\n" +"\n" +" /* Type attribute cache version tag. Added in version 2.6.\n" +" * If zero, the cache is invalid and must be initialized.\n" +" */\n" +" unsigned int tp_version_tag;\n" +"\n" +" destructor tp_finalize;\n" +" vectorcallfunc tp_vectorcall;\n" +"\n" +" /* bitset of which type-watchers care about this type */\n" +" unsigned char tp_watched;\n" +"\n" +" /* Number of tp_version_tag values used.\n" +" * Set to _Py_ATTR_CACHE_UNUSED if the attribute cache is\n" +" * disabled for this type (e.g. due to custom MRO entries).\n" +" * Otherwise, limited to MAX_VERSIONS_PER_CLASS (defined elsewhere).\n" +" */\n" +" uint16_t tp_versions_used;\n" +"} PyTypeObject;\n" #: ../../c-api/typeobj.rst:487 msgid "PyObject Slots" -msgstr "" +msgstr "PyObject-Slots" #: ../../c-api/typeobj.rst:489 msgid "" @@ -1318,10 +1449,17 @@ msgid "" "instances (i.e. type objects) *must* have " "the :c:member:`~PyVarObject.ob_size` field." msgstr "" +"Die Struktur des Typobjekts erweitert die Struktur :c:type:`PyVarObject`. " +"Das Feld :c:member:`~PyVarObject.ob_size` wird für dynamische Typen " +"verwendet (erzeugt von :c:func:`!type_new`, üblicherweise aus einer class-" +"Anweisung heraus aufgerufen). Beachte, dass :c:data:`PyType_Type` (der " +"Metatyp) :c:member:`~PyTypeObject.tp_itemsize` initialisiert, was bedeutet, " +"dass seine Instanzen (also Typobjekte) das " +"Feld :c:member:`~PyVarObject.ob_size` haben *müssen*." #: ../../c-api/typeobj.rst:496 msgid ":c:member:`PyObject.ob_refcnt`" -msgstr "" +msgstr ":c:member:`PyObject.ob_refcnt`" #: ../../c-api/typeobj.rst:498 msgid "" @@ -1332,6 +1470,12 @@ msgid "" "as references. But for :ref:`dynamically allocated type objects `, the instances *do* count as references." msgstr "" +"Der Referenzzähler des Typobjekts wird vom Makro ``PyObject_HEAD_INIT`` auf " +"``1`` initialisiert. Beachte, dass bei :ref:`statisch angelegten Typobjekten " +"` die Instanzen des Typs (Objekte, " +"deren :c:member:`~PyObject.ob_type` auf den Typ zurückverweist) *nicht* als " +"Referenzen zählen. Bei :ref:`dynamisch angelegten Typobjekten ` " +"zählen die Instanzen dagegen *sehr wohl* als Referenzen." #: ../../c-api/typeobj.rst:505 ../../c-api/typeobj.rst:528 #: ../../c-api/typeobj.rst:544 ../../c-api/typeobj.rst:591 @@ -1367,16 +1511,16 @@ msgstr "" #: ../../c-api/typeobj.rst:2328 ../../c-api/typeobj.rst:2344 #: ../../c-api/typeobj.rst:2488 ../../c-api/typeobj.rst:2548 msgid "**Inheritance:**" -msgstr "" +msgstr "**Vererbung:**" #: ../../c-api/typeobj.rst:507 ../../c-api/typeobj.rst:546 #: ../../c-api/typeobj.rst:593 msgid "This field is not inherited by subtypes." -msgstr "" +msgstr "Dieses Feld wird nicht an Untertypen vererbt." #: ../../c-api/typeobj.rst:510 msgid ":c:member:`PyObject.ob_type`" -msgstr "" +msgstr ":c:member:`PyObject.ob_type`" #: ../../c-api/typeobj.rst:512 msgid "" @@ -1389,10 +1533,19 @@ msgid "" "explicitly at the start of the module's initialization function, before " "doing anything else. This is typically done like this::" msgstr "" +"Das ist der Typ des Typs, mit anderen Worten sein Metatyp. Er wird durch das " +"Argument des Makros ``PyObject_HEAD_INIT`` initialisiert, und sein Wert " +"sollte normalerweise ``&PyType_Type`` sein. Bei dynamisch ladbaren " +"Erweiterungsmodulen, die (zumindest) unter Windows verwendbar sein müssen, " +"beschwert sich der Compiler allerdings, dass das kein gültiger " +"Initialisierer sei. Deshalb ist es üblich, dem Makro ``PyObject_HEAD_INIT`` " +"``NULL`` zu übergeben und dieses Feld ausdrücklich am Anfang der " +"Initialisierungsfunktion des Moduls zu setzen, bevor irgendetwas anderes " +"geschieht. Üblicherweise sieht das so aus::" #: ../../c-api/typeobj.rst:521 msgid "Foo_Type.ob_type = &PyType_Type;" -msgstr "" +msgstr "Foo_Type.ob_type = &PyType_Type;" #: ../../c-api/typeobj.rst:523 msgid "" @@ -1402,6 +1555,11 @@ msgid "" "field of the base class. :c:func:`PyType_Ready` will not change this field " "if it is non-zero." msgstr "" +"Das sollte geschehen, bevor Instanzen des Typs erzeugt " +"werden. :c:func:`PyType_Ready` prüft, ob :c:member:`~PyObject.ob_type` " +"``NULL`` ist, und initialisiert es in diesem Fall mit dem " +"Feld :c:member:`~PyObject.ob_type` der Basisklasse. :c:func:`PyType_Ready` " +"ändert dieses Feld nicht, wenn es ungleich null ist." #: ../../c-api/typeobj.rst:530 ../../c-api/typeobj.rst:819 #: ../../c-api/typeobj.rst:946 ../../c-api/typeobj.rst:1046 @@ -1410,15 +1568,15 @@ msgstr "" #: ../../c-api/typeobj.rst:2047 ../../c-api/typeobj.rst:2122 #: ../../c-api/typeobj.rst:2248 ../../c-api/typeobj.rst:2490 msgid "This field is inherited by subtypes." -msgstr "" +msgstr "Dieses Feld wird an Untertypen vererbt." #: ../../c-api/typeobj.rst:534 msgid "PyVarObject Slots" -msgstr "" +msgstr "PyVarObject-Slots" #: ../../c-api/typeobj.rst:536 msgid ":c:member:`PyVarObject.ob_size`" -msgstr "" +msgstr ":c:member:`PyVarObject.ob_size`" #: ../../c-api/typeobj.rst:538 msgid "" @@ -1426,14 +1584,18 @@ msgid "" "initialized to zero. For :ref:`dynamically allocated type objects `, this field has a special internal meaning." msgstr "" +"Bei :ref:`statisch angelegten Typobjekten ` sollte das auf " +"null initialisiert werden. Bei :ref:`dynamisch angelegten Typobjekten ` hat dieses Feld eine besondere interne Bedeutung." #: ../../c-api/typeobj.rst:542 msgid "This field should be accessed using the :c:func:`Py_SIZE()` macro." msgstr "" +"Auf dieses Feld sollte über das Makro :c:func:`Py_SIZE()` zugegriffen werden." #: ../../c-api/typeobj.rst:550 msgid "PyTypeObject Slots" -msgstr "" +msgstr "PyTypeObject-Slots" #: ../../c-api/typeobj.rst:552 msgid "" @@ -1443,12 +1605,19 @@ msgid "" "on :c:data:`PyBaseObject_Type` and :c:data:`PyType_Type` effectively act as " "defaults.)" msgstr "" +"Zu jedem Slot gibt es einen Abschnitt, der die Vererbung beschreibt. " +"Kann :c:func:`PyType_Ready` einen Wert setzen, wenn das Feld auf ``NULL`` " +"gesetzt ist, gibt es außerdem einen Abschnitt „Vorgabe“. (Beachte, dass " +"viele Felder, die an :c:data:`PyBaseObject_Type` und :c:data:`PyType_Type` " +"gesetzt sind, praktisch wie Vorgaben wirken.)" #: ../../c-api/typeobj.rst:559 msgid "" "See :c:macro:`Py_tp_name` for the corresponding :c:member:`Slot ID " "`." msgstr "" +"Die zugehörige :c:member:`Slot-ID ` steht " +"unter :c:macro:`Py_tp_name`." #: ../../c-api/typeobj.rst:562 msgid "" @@ -1461,6 +1630,14 @@ msgid "" "subpackage :mod:`!Q` in package :mod:`!P` should have " "the :c:member:`~PyTypeObject.tp_name` initializer ``\"P.Q.M.T\"``." msgstr "" +"Zeiger auf eine NUL-terminierte Zeichenkette mit dem Namen des Typs. Bei " +"Typen, die als Modulglobale zugänglich sind, sollte die Zeichenkette der " +"vollständige Modulname sein, gefolgt von einem Punkt und dem Typnamen. Bei " +"integrierten Typen sollte es nur der Typname sein. Ist das Modul ein " +"Untermodul eines Pakets, gehört der vollständige Paketname zum vollständigen " +"Modulnamen. Ein Typ namens :class:`!T` zum Beispiel, der im Modul :mod:`!M` " +"im Unterpaket :mod:`!Q` im Paket :mod:`!P` definiert ist, sollte " +"den :c:member:`~PyTypeObject.tp_name`-Initialisierer ``\"P.Q.M.T\"`` haben." #: ../../c-api/typeobj.rst:570 msgid "" @@ -1468,6 +1645,9 @@ msgid "" "be the type name, and the module name explicitly stored in the type dict as " "the value for key ``'__module__'``." msgstr "" +"Bei :ref:`dynamisch angelegten Typobjekten ` sollte das nur der " +"Typname sein. Der Modulname wird ausdrücklich im Dictionary des Typs unter " +"dem Schlüssel ``'__module__'`` abgelegt." #: ../../c-api/typeobj.rst:575 msgid "" @@ -1476,6 +1656,10 @@ msgid "" "accessible as the :attr:`~type.__module__` attribute, and everything after " "the last dot is made accessible as the :attr:`~type.__name__` attribute." msgstr "" +"Bei :ref:`statisch angelegten Typobjekten ` sollte das Feld " +"*tp_name* einen Punkt enthalten. Alles vor dem letzten Punkt wird als " +"Attribut :attr:`~type.__module__` zugänglich gemacht, alles nach dem letzten " +"Punkt als Attribut :attr:`~type.__name__`." #: ../../c-api/typeobj.rst:581 msgid "" @@ -1486,6 +1670,13 @@ msgid "" "impossible to pickle. Additionally, it will not be listed in module " "documentations created with pydoc." msgstr "" +"Ist kein Punkt vorhanden, wird das gesamte " +"Feld :c:member:`~PyTypeObject.tp_name` als Attribut :attr:`~type.__name__` " +"zugänglich gemacht, und das Attribut :attr:`~type.__module__` ist " +"undefiniert (sofern es nicht wie oben beschrieben ausdrücklich im Dictionary " +"gesetzt wird). Das bedeutet, dass sich dein Typ nicht picklen lässt. " +"Außerdem wird er in Moduldokumentationen, die mit pydoc erzeugt werden, " +"nicht aufgeführt." #: ../../c-api/typeobj.rst:587 msgid "" @@ -1493,11 +1684,16 @@ msgid "" "in :c:func:`PyTypeObject` (other than " "potentially :c:member:`~PyTypeObject.tp_itemsize`)." msgstr "" +"Dieses Feld darf nicht ``NULL`` sein. Es ist das einzige erforderliche Feld " +"in :c:func:`PyTypeObject` (abgesehen möglicherweise " +"von :c:member:`~PyTypeObject.tp_itemsize`)." #: ../../c-api/typeobj.rst:599 msgid "" "These fields allow calculating the size in bytes of instances of the type." msgstr "" +"Über diese Felder lässt sich die Größe von Instanzen des Typs in Bytes " +"berechnen." #: ../../c-api/typeobj.rst:601 msgid "" @@ -1505,6 +1701,9 @@ msgid "" "and :c:macro:`Py_tp_itemsize` for the corresponding :c:member:`Slot IDs " "`." msgstr "" +"Die zugehörigen :c:member:`Slot-IDs ` stehen " +"unter :c:macro:`Py_tp_basicsize`, :c:macro:`Py_tp_extra_basicsize` " +"und :c:macro:`Py_tp_itemsize`." #: ../../c-api/typeobj.rst:605 msgid "" @@ -1515,6 +1714,12 @@ msgid "" "tp_basicsize`. (Exceptions to this rule can be made " "using :c:func:`PyUnstable_Object_GC_NewWithExtraData`.)" msgstr "" +"Es gibt zwei Arten von Typen: Typen mit Instanzen fester Länge haben ein " +"Feld :c:member:`!tp_itemsize` von null, Typen mit Instanzen veränderlicher " +"Länge ein Feld :c:member:`!tp_itemsize` ungleich null. Bei einem Typ mit " +"Instanzen fester Länge haben alle Instanzen dieselbe Größe, die " +"in :c:member:`!tp_basicsize` angegeben ist. (Ausnahmen von dieser Regel " +"lassen sich mit :c:func:`PyUnstable_Object_GC_NewWithExtraData` machen.)" #: ../../c-api/typeobj.rst:612 msgid "" @@ -1523,6 +1728,10 @@ msgid "" "is :c:member:`!tp_basicsize` plus N times :c:member:`!tp_itemsize`, where N " "is the \"length\" of the object." msgstr "" +"Bei einem Typ mit Instanzen veränderlicher Länge müssen die Instanzen ein " +"Feld :c:member:`~PyVarObject.ob_size` haben, und die Instanzgröße " +"ist :c:member:`!tp_basicsize` plus N mal :c:member:`!tp_itemsize`, wobei N " +"die „Länge“ des Objekts ist." #: ../../c-api/typeobj.rst:617 msgid "" @@ -1534,12 +1743,21 @@ msgid "" "underlying storage and its size should be accessed " "using :c:func:`PyLong_Export`." msgstr "" +"Funktionen wie :c:func:`PyObject_NewVar` nehmen den Wert von N als Argument " +"und legen ihn im Feld :c:member:`~PyVarObject.ob_size` der Instanz ab. " +"Beachte, dass das Feld :c:member:`~PyVarObject.ob_size` später für andere " +"Zwecke verwendet werden kann. :py:type:`int`-Instanzen zum Beispiel nutzen " +"die Bits von :c:member:`~PyVarObject.ob_size` auf eine von der " +"Implementierung festgelegte Weise. Auf den zugrunde liegenden Speicher und " +"seine Größe sollte über :c:func:`PyLong_Export` zugegriffen werden." #: ../../c-api/typeobj.rst:627 msgid "" "The :c:member:`~PyVarObject.ob_size` field should be accessed using " "the :c:func:`Py_SIZE()` and :c:func:`Py_SET_SIZE()` macros." msgstr "" +"Auf das Feld :c:member:`~PyVarObject.ob_size` sollte über die " +"Makros :c:func:`Py_SIZE()` und :c:func:`Py_SET_SIZE()` zugegriffen werden." #: ../../c-api/typeobj.rst:630 msgid "" @@ -1550,6 +1768,13 @@ msgid "" "with :py:type:`int`, avoid reading lists' :c:member:`!ob_size` directly. " "Call :c:func:`PyList_Size` instead.)" msgstr "" +"Umgekehrt bedeutet das Vorhandensein eines " +"Feldes :c:member:`~PyVarObject.ob_size` im Aufbau der Instanz nicht, dass " +"die Instanzstruktur veränderliche Länge hat. Der Typ :py:type:`list` zum " +"Beispiel hat Instanzen fester Länge, und diese Instanzen haben trotzdem ein " +"Feld :c:member:`~PyVarObject.ob_size`. (Wie bei :py:type:`int` solltest " +"du :c:member:`!ob_size` von Listen nicht unmittelbar auslesen. Rufe " +"stattdessen :c:func:`PyList_Size` auf.)" #: ../../c-api/typeobj.rst:637 msgid "" @@ -1557,6 +1782,9 @@ msgid "" "type's :c:member:`~PyTypeObject.tp_base`, plus any extra data needed by each " "instance." msgstr "" +":c:member:`!tp_basicsize` schließt den Platz ein, der für die Daten " +"des :c:member:`~PyTypeObject.tp_base` des Typs nötig ist, zuzüglich aller " +"zusätzlichen Daten, die jede Instanz braucht." #: ../../c-api/typeobj.rst:641 msgid "" @@ -1566,6 +1794,11 @@ msgid "" "words, :c:member:`!tp_basicsize` must be greater than or equal to the " "base's :c:member:`!tp_basicsize`." msgstr "" +"Der richtige Weg, :c:member:`!tp_basicsize` zu setzen, führt über den " +"``sizeof``-Operator auf der Struktur, mit der der Aufbau der Instanz " +"deklariert wird. Diese Struktur muss die Struktur einschließen, mit der der " +"Basistyp deklariert wird. Mit anderen Worten muss :c:member:`!tp_basicsize` " +"größer oder gleich dem :c:member:`!tp_basicsize` des Basistyps sein." #: ../../c-api/typeobj.rst:647 msgid "" @@ -1575,22 +1808,32 @@ msgid "" "usually defined by the macro :c:macro:`PyObject_HEAD` " "or :c:macro:`PyObject_VAR_HEAD`, respectively." msgstr "" +"Da jeder Typ ein Untertyp von :py:type:`object` ist, muss diese " +"Struktur :c:type:`PyObject` oder :c:type:`PyVarObject` einschließen (je " +"nachdem, ob :c:member:`~PyVarObject.ob_size` enthalten sein soll). " +"Üblicherweise werden diese über das Makro :c:macro:`PyObject_HEAD` " +"beziehungsweise :c:macro:`PyObject_VAR_HEAD` festgelegt." #: ../../c-api/typeobj.rst:653 msgid "" "The basic size does not include the GC header size, as that header is not " "part of :c:macro:`PyObject_HEAD`." msgstr "" +"Die Grundgröße schließt die Größe des GC-Kopfes nicht ein, weil dieser Kopf " +"nicht zu :c:macro:`PyObject_HEAD` gehört." #: ../../c-api/typeobj.rst:656 msgid "" "For cases where struct used to declare the base type is unknown, " "see :c:member:`PyType_Spec.basicsize` and :c:func:`PyType_FromMetaclass`." msgstr "" +"Für Fälle, in denen die Struktur zur Deklaration des Basistyps unbekannt " +"ist, siehe :c:member:`PyType_Spec.basicsize` " +"und :c:func:`PyType_FromMetaclass`." #: ../../c-api/typeobj.rst:659 msgid "Notes about alignment:" -msgstr "" +msgstr "Hinweise zur Ausrichtung:" #: ../../c-api/typeobj.rst:661 msgid "" @@ -1600,6 +1843,11 @@ msgid "" "when using compiler extensions like ``__attribute__((packed))``, it is up to " "you." msgstr "" +":c:member:`!tp_basicsize` muss ein Vielfaches von ``_Alignof(PyObject)`` " +"sein. Verwendest du wie empfohlen ``sizeof`` auf einer ``struct``, " +"die :c:macro:`PyObject_HEAD` einschließt, sorgt der Compiler dafür. " +"Verwendest du keine C-``struct`` oder Compiler-Erweiterungen wie " +"``__attribute__((packed))``, liegt es an dir." #: ../../c-api/typeobj.rst:666 msgid "" @@ -1608,6 +1856,11 @@ msgid "" "alignment. For example, if a type's variable part stores a ``double``, it is " "your responsibility that both fields are a multiple of ``_Alignof(double)``." msgstr "" +"Erfordern die veränderlichen Elemente eine bestimmte Ausrichtung, " +"müssen :c:member:`!tp_basicsize` und :c:member:`!tp_itemsize` jeweils ein " +"Vielfaches dieser Ausrichtung sein. Speichert der veränderliche Teil eines " +"Typs zum Beispiel ein ``double``, liegt es in deiner Verantwortung, dass " +"beide Felder ein Vielfaches von ``_Alignof(double)`` sind." #: ../../c-api/typeobj.rst:675 msgid "" @@ -1615,6 +1868,9 @@ msgid "" "set to zero, :c:func:`PyType_Ready` will copy the value from the base type, " "indicating that the instances do not need additional storage.)" msgstr "" +"Diese Felder werden von Untertypen einzeln vererbt. (Das heißt: Ist das Feld " +"auf null gesetzt, kopiert :c:func:`PyType_Ready` den Wert aus dem Basistyp, " +"was anzeigt, dass die Instanzen keinen zusätzlichen Speicher brauchen.)" #: ../../c-api/typeobj.rst:680 msgid "" @@ -1623,15 +1879,22 @@ msgid "" "different non-zero value in a subtype (though this depends on the " "implementation of the base type)." msgstr "" +"Hat der Basistyp ein :c:member:`~PyTypeObject.tp_itemsize` ungleich null, " +"ist es im Allgemeinen nicht gefahrlos " +"möglich, :c:member:`~PyTypeObject.tp_itemsize` in einem Untertyp auf einen " +"anderen Wert ungleich null zu setzen (das hängt allerdings von der Umsetzung " +"des Basistyps ab)." #: ../../c-api/typeobj.rst:689 msgid "" "A pointer to the instance destructor function. The function signature is::" msgstr "" +"Ein Zeiger auf die Destruktorfunktion der Instanz. Die Signatur der Funktion " +"lautet::" #: ../../c-api/typeobj.rst:691 msgid "void tp_dealloc(PyObject *self);" -msgstr "" +msgstr "void tp_dealloc(PyObject *self);" #: ../../c-api/typeobj.rst:693 msgid "" @@ -1640,6 +1903,11 @@ msgid "" "instance, and call the type's :c:member:`~PyTypeObject.tp_free` function to " "free the object itself." msgstr "" +"Die Destruktorfunktion sollte alle Referenzen entfernen, die die Instanz " +"besitzt (also zum Beispiel :c:func:`Py_CLEAR` aufrufen), alle Speicherpuffer " +"freigeben, die der Instanz gehören, und die " +"Funktion :c:member:`~PyTypeObject.tp_free` des Typs aufrufen, um das Objekt " +"selbst freizugeben." #: ../../c-api/typeobj.rst:698 msgid "" @@ -1649,6 +1917,11 @@ msgid "" "preexisting error indicator (the deallocation could have occurred while " "processing a different error):" msgstr "" +"Rufst du möglicherweise Funktionen auf, die den Fehlerindikator setzen " +"können, musst du :c:func:`PyErr_GetRaisedException` " +"und :c:func:`PyErr_SetRaisedException` verwenden, damit du einen bereits " +"vorhandenen Fehlerindikator nicht überschreibst (die Freigabe könnte während " +"der Behandlung eines anderen Fehlers erfolgt sein):" #: ../../c-api/typeobj.rst:703 msgid "" @@ -1661,6 +1934,14 @@ msgid "" " PyErr_SetRaisedException(exc);\n" "}" msgstr "" +"static void\n" +"foo_dealloc(foo_object *self)\n" +"{\n" +" PyObject *et, *ev, *etb;\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +" ...\n" +" PyErr_SetRaisedException(exc);\n" +"}" #: ../../c-api/typeobj.rst:714 msgid "" @@ -1668,10 +1949,14 @@ msgid "" "case it should call :c:func:`PyErr_FormatUnraisable` to log (and clear) an " "unraisable exception." msgstr "" +"Der Dealloc-Handler selbst darf keine Ausnahme auslösen. Stößt er auf einen " +"Fehlerfall, sollte er :c:func:`PyErr_FormatUnraisable` aufrufen, um eine " +"nicht auslösbare Ausnahme zu protokollieren (und zu löschen)." #: ../../c-api/typeobj.rst:718 msgid "No guarantees are made about when an object is destroyed, except:" msgstr "" +"Darüber, wann ein Objekt zerstört wird, werden keine Zusagen gemacht, außer:" #: ../../c-api/typeobj.rst:720 msgid "" @@ -1679,6 +1964,10 @@ msgid "" "reference to the object is deleted, unless its finalizer " "(:c:member:`~PyTypeObject.tp_finalize`) subsequently resurrects the object." msgstr "" +"Python zerstört ein Objekt sofort oder einige Zeit, nachdem die letzte " +"Referenz darauf gelöscht wurde, sofern nicht sein Finalisierer " +"(:c:member:`~PyTypeObject.tp_finalize`) das Objekt anschließend wieder " +"auferstehen lässt." #: ../../c-api/typeobj.rst:724 msgid "" @@ -1686,6 +1975,9 @@ msgid "" "(:c:member:`~PyTypeObject.tp_finalize`) or automatically cleared " "(:c:member:`~PyTypeObject.tp_clear`)." msgstr "" +"Ein Objekt wird nicht zerstört, während es automatisch finalisiert " +"(:c:member:`~PyTypeObject.tp_finalize`) oder automatisch geleert wird " +"(:c:member:`~PyTypeObject.tp_clear`)." #: ../../c-api/typeobj.rst:728 msgid "" @@ -1693,6 +1985,9 @@ msgid "" "when the new reference count is zero, but this may change in a future " "version." msgstr "" +"CPython zerstört ein Objekt derzeit unmittelbar aus :c:func:`Py_DECREF` " +"heraus, sobald der neue Referenzzähler null ist. Das kann sich in einer " +"künftigen Version ändern." #: ../../c-api/typeobj.rst:732 msgid "" @@ -1700,6 +1995,9 @@ msgid "" "beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " "finalized before destruction." msgstr "" +"Es wird empfohlen, am Anfang von :c:member:`!" +"tp_dealloc` :c:func:`PyObject_CallFinalizerFromDealloc` aufzurufen, damit " +"das Objekt vor der Zerstörung in jedem Fall finalisiert ist." #: ../../c-api/typeobj.rst:736 msgid "" @@ -1707,6 +2005,10 @@ msgid "" "flag is set), the destructor should call :c:func:`PyObject_GC_UnTrack` " "before clearing any member fields." msgstr "" +"Unterstützt der Typ die Speicherbereinigung (das " +"Flag :c:macro:`Py_TPFLAGS_HAVE_GC` ist gesetzt), sollte der " +"Destruktor :c:func:`PyObject_GC_UnTrack` aufrufen, bevor er Member-Felder " +"leert." #: ../../c-api/typeobj.rst:740 msgid "" @@ -1715,6 +2017,10 @@ msgid "" "that the object is always cleared before destruction. Beware " "that :c:member:`!tp_clear` might have already been called." msgstr "" +"Es ist zulässig, :c:member:`~PyTypeObject.tp_clear` aus :c:member:`!" +"tp_dealloc` heraus aufzurufen, um doppelten Code zu vermeiden und " +"sicherzustellen, dass das Objekt vor der Zerstörung immer geleert ist. Sei " +"dir bewusst, dass :c:member:`!tp_clear` bereits aufgerufen worden sein kann." #: ../../c-api/typeobj.rst:745 msgid "" @@ -1723,6 +2029,10 @@ msgid "" "(via :c:func:`Py_DECREF`) after calling the type deallocator. See the " "example code below.::" msgstr "" +"Ist der Typ auf dem Heap angelegt (:c:macro:`Py_TPFLAGS_HEAPTYPE`), sollte " +"der Deallokator die gehaltene Referenz auf sein Typobjekt freigeben " +"(über :c:func:`Py_DECREF`), nachdem er den Deallokator des Typs aufgerufen " +"hat. Siehe den Beispielcode unten.::" #: ../../c-api/typeobj.rst:750 msgid "" @@ -1735,6 +2045,14 @@ msgid "" " Py_TYPE(self)->tp_free(self);\n" "}" msgstr "" +"static void\n" +"foo_dealloc(PyObject *op)\n" +"{\n" +" foo_object *self = (foo_object *) op;\n" +" PyObject_GC_UnTrack(self);\n" +" Py_CLEAR(self->ref);\n" +" Py_TYPE(self)->tp_free(self);\n" +"}" #: ../../c-api/typeobj.rst:759 msgid "" @@ -1743,10 +2061,14 @@ msgid "" "must be backed up first and restored later (after logging any exceptions " "with :c:func:`PyErr_WriteUnraisable`)." msgstr "" +":c:member:`!tp_dealloc` muss den Ausnahmezustand unverändert lassen. Muss es " +"etwas aufrufen, das eine Ausnahme auslösen könnte, ist der Ausnahmezustand " +"zuerst zu sichern und später wiederherzustellen (nachdem etwaige Ausnahmen " +"mit :c:func:`PyErr_WriteUnraisable` protokolliert wurden)." #: ../../c-api/typeobj.rst:764 msgid "Example::" -msgstr "" +msgstr "Beispiel::" #: ../../c-api/typeobj.rst:766 msgid "" @@ -1789,6 +2111,44 @@ msgid "" " PyErr_SetRaisedException(exc);\n" "}" msgstr "" +"static void\n" +"foo_dealloc(PyObject *self)\n" +"{\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" if (PyObject_CallFinalizerFromDealloc(self) < 0) {\n" +" // self was resurrected.\n" +" goto done;\n" +" }\n" +"\n" +" PyTypeObject *tp = Py_TYPE(self);\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HAVE_GC) {\n" +" PyObject_GC_UnTrack(self);\n" +" }\n" +"\n" +" // Optional, but convenient to avoid code duplication.\n" +" if (tp->tp_clear && tp->tp_clear(self) < 0) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +"\n" +" // Any additional destruction goes here.\n" +"\n" +" tp->tp_free(self);\n" +" self = NULL; // In case PyErr_WriteUnraisable() is called below.\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" +" Py_CLEAR(tp);\n" +" }\n" +"\n" +"done:\n" +" // Optional, if something was called that might have raised an\n" +" // exception.\n" +" if (PyErr_Occurred()) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +" PyErr_SetRaisedException(exc);\n" +"}" #: ../../c-api/typeobj.rst:805 msgid "" @@ -1802,12 +2162,24 @@ msgid "" "those objects on the thread which called :c:member:`!tp_dealloc` will not " "violate any assumptions of the library." msgstr "" +":c:member:`!tp_dealloc` darf aus jedem Python-Thread aufgerufen werden, " +"nicht nur aus dem, der das Objekt erzeugt hat (wird das Objekt Teil eines " +"Referenzzyklus, kann dieser Zyklus von einer Speicherbereinigung in einem " +"beliebigen Thread eingesammelt werden). Für Aufrufe der Python-API ist das " +"kein Problem, denn der Thread, auf dem :c:member:`!tp_dealloc` aufgerufen " +"wird, hat einen :term:`angehängten Thread-Zustand `. " +"Zerstört das zu zerstörende Objekt seinerseits Objekte aus einer anderen C-" +"Bibliothek, ist allerdings darauf zu achten, dass das Zerstören dieser " +"Objekte auf dem Thread, der :c:member:`!tp_dealloc` aufgerufen hat, keine " +"Annahmen dieser Bibliothek verletzt." #: ../../c-api/typeobj.rst:823 ../../c-api/typeobj.rst:1740 #: ../../c-api/typeobj.rst:2503 msgid "" ":ref:`life-cycle` for details about how this slot relates to other slots." msgstr "" +":ref:`life-cycle` -- Einzelheiten dazu, wie dieser Slot mit den anderen " +"Slots zusammenhängt." #: ../../c-api/typeobj.rst:828 msgid "" @@ -1815,6 +2187,9 @@ msgid "" "object using the :ref:`vectorcall protocol `, a more efficient " "alternative of the simpler :c:member:`~PyTypeObject.tp_call`." msgstr "" +"Ein wahlfreier Versatz zu einer Funktion je Instanz, die das Aufrufen des " +"Objekts über das :ref:`vectorcall-Protokoll ` umsetzt -- eine " +"wirksamere Alternative zum einfacheren :c:member:`~PyTypeObject.tp_call`." #: ../../c-api/typeobj.rst:833 msgid "" @@ -1822,6 +2197,10 @@ msgid "" "set. If so, this must be a positive integer containing the offset in the " "instance of a :c:type:`vectorcallfunc` pointer." msgstr "" +"Dieses Feld wird nur verwendet, wenn das " +"Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` gesetzt ist. Ist es das, muss " +"dies eine positive ganze Zahl sein, die den Versatz " +"eines :c:type:`vectorcallfunc`-Zeigers in der Instanz enthält." #: ../../c-api/typeobj.rst:837 msgid "" @@ -1829,6 +2208,9 @@ msgid "" "behaves as if :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the " "instance falls back to :c:member:`~PyTypeObject.tp_call`." msgstr "" +"Der *vectorcallfunc*-Zeiger darf ``NULL`` sein. Die Instanz verhält sich " +"dann so, als wäre :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` nicht gesetzt: Das " +"Aufrufen der Instanz fällt auf :c:member:`~PyTypeObject.tp_call` zurück." #: ../../c-api/typeobj.rst:841 msgid "" @@ -1837,12 +2219,18 @@ msgid "" "consistent with the *vectorcallfunc* function. This can be done by setting " "*tp_call* to :c:func:`PyVectorcall_Call`." msgstr "" +"Jede Klasse, die ``Py_TPFLAGS_HAVE_VECTORCALL`` setzt, muss " +"auch :c:member:`~PyTypeObject.tp_call` setzen und dafür sorgen, dass dessen " +"Verhalten zur *vectorcallfunc*-Funktion passt. Das lässt sich erreichen, " +"indem *tp_call* auf :c:func:`PyVectorcall_Call` gesetzt wird." #: ../../c-api/typeobj.rst:848 msgid "" "Before version 3.8, this slot was named ``tp_print``. In Python 2.x, it was " "used for printing to a file. In Python 3.0 to 3.7, it was unused." msgstr "" +"Vor Version 3.8 hieß dieser Slot ``tp_print``. In Python 2.x diente er der " +"Ausgabe in eine Datei. In Python 3.0 bis 3.7 war er unbenutzt." #: ../../c-api/typeobj.rst:854 msgid "" @@ -1853,6 +2241,13 @@ msgid "" "setting ``__call__`` will disable vectorcall optimization by clearing " "the :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag." msgstr "" +"Vor Version 3.12 war es nicht empfohlen, dass :ref:`veränderliche Heap-Typen " +"` das vectorcall-Protokoll umsetzen. Setzt " +"jemand :attr:`~object.__call__` in Python-Code, wird nur *tp_call* " +"aktualisiert, womit es wahrscheinlich nicht mehr zur vectorcall-Funktion " +"passt. Seit 3.12 schaltet das Setzen von ``__call__`` die vectorcall-" +"Optimierung ab, indem es das Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` " +"löscht." #: ../../c-api/typeobj.rst:864 msgid "" @@ -1861,10 +2256,17 @@ msgid "" "it's not set, then the subclass won't use :ref:`vectorcall `, " "except when :c:func:`PyVectorcall_Call` is explicitly called." msgstr "" +"Dieses Feld wird immer vererbt. Das " +"Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` wird allerdings nicht immer " +"vererbt. Ist es nicht gesetzt, verwendet die Unterklasse :ref:`vectorcall " +"` nicht, außer wenn :c:func:`PyVectorcall_Call` ausdrücklich " +"aufgerufen wird." #: ../../c-api/typeobj.rst:875 msgid "An optional pointer to the get-attribute-string function." msgstr "" +"Ein wahlfreier Zeiger auf die Funktion zum Lesen eines Attributs über eine " +"Zeichenkette." #: ../../c-api/typeobj.rst:877 msgid "" @@ -1873,10 +2275,14 @@ msgid "" "but taking a C string instead of a Python string object to give the " "attribute name." msgstr "" +"Dieses Feld ist veraltet. Ist es festgelegt, sollte es auf eine Funktion " +"zeigen, die sich genauso verhält wie die " +"Funktion :c:member:`~PyTypeObject.tp_getattro`, aber eine C-Zeichenkette " +"statt eines Python-Zeichenkettenobjekts für den Attributnamen nimmt." #: ../../c-api/typeobj.rst:883 ../../c-api/typeobj.rst:1091 msgid "Group: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject.tp_getattro`" -msgstr "" +msgstr "Gruppe: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject.tp_getattro`" #: ../../c-api/typeobj.rst:885 msgid "" @@ -1887,11 +2293,18 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_getattr` " "and :c:member:`~PyTypeObject.tp_getattro` are both ``NULL``." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_getattro` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_getattr` als " +"auch :c:member:`~PyTypeObject.tp_getattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_getattr` " +"und :c:member:`~PyTypeObject.tp_getattro` des Untertyps beide ``NULL`` sind." #: ../../c-api/typeobj.rst:894 ../../c-api/typeobj.rst:1106 msgid "" "An optional pointer to the function for setting and deleting attributes." msgstr "" +"Ein wahlfreier Zeiger auf die Funktion zum Setzen und Löschen von Attributen." #: ../../c-api/typeobj.rst:896 msgid "" @@ -1900,10 +2313,14 @@ msgid "" "but taking a C string instead of a Python string object to give the " "attribute name." msgstr "" +"Dieses Feld ist veraltet. Ist es festgelegt, sollte es auf eine Funktion " +"zeigen, die sich genauso verhält wie die " +"Funktion :c:member:`~PyTypeObject.tp_setattro`, aber eine C-Zeichenkette " +"statt eines Python-Zeichenkettenobjekts für den Attributnamen nimmt." #: ../../c-api/typeobj.rst:902 ../../c-api/typeobj.rst:1119 msgid "Group: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject.tp_setattro`" -msgstr "" +msgstr "Gruppe: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject.tp_setattro`" #: ../../c-api/typeobj.rst:904 msgid "" @@ -1914,6 +2331,12 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_setattr` " "and :c:member:`~PyTypeObject.tp_setattro` are both ``NULL``." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_setattro` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_setattr` als " +"auch :c:member:`~PyTypeObject.tp_setattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_setattr` " +"und :c:member:`~PyTypeObject.tp_setattro` des Untertyps beide ``NULL`` sind." #: ../../c-api/typeobj.rst:911 msgid "" @@ -1921,30 +2344,38 @@ msgid "" "objects which implement :term:`awaitable` and :term:`asynchronous iterator` " "protocols at the C-level. See :ref:`async-structs` for details." msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die die Protokolle :term:`abwartbar ` " +"und :term:`asynchroner Iterator ` auf C-Ebene " +"umsetzen. Einzelheiten stehen unter :ref:`async-structs`." #: ../../c-api/typeobj.rst:915 msgid "Formerly known as ``tp_compare`` and ``tp_reserved``." -msgstr "" +msgstr "Früher bekannt als ``tp_compare`` und ``tp_reserved``." #: ../../c-api/typeobj.rst:920 msgid "" "The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the " "contained fields are inherited individually." msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_async` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." #: ../../c-api/typeobj.rst:930 msgid "" "An optional pointer to a function that implements the built-in " "function :func:`repr`." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die die integrierte " +"Funktion :func:`repr` umsetzt." #: ../../c-api/typeobj.rst:933 msgid "The signature is the same as for :c:func:`PyObject_Repr`::" -msgstr "" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Repr`::" #: ../../c-api/typeobj.rst:935 msgid "PyObject *tp_repr(PyObject *self);" -msgstr "" +msgstr "PyObject *tp_repr(PyObject *self);" #: ../../c-api/typeobj.rst:937 msgid "" @@ -1954,6 +2385,12 @@ msgid "" "feasible, it should return a string starting with ``'<'`` and ending with " "``'>'`` from which both the type and the value of the object can be deduced." msgstr "" +"Die Funktion muss eine Zeichenkette oder ein Unicode-Objekt zurückgeben. Im " +"Idealfall sollte sie eine Zeichenkette zurückgeben, die -- an :func:`eval` " +"übergeben und in einer passenden Umgebung -- ein Objekt mit demselben Wert " +"ergibt. Ist das nicht machbar, sollte sie eine Zeichenkette zurückgeben, die " +"mit ``'<'`` beginnt und mit ``'>'`` endet und aus der sich sowohl der Typ " +"als auch der Wert des Objekts ableiten lassen." #: ../../c-api/typeobj.rst:948 ../../c-api/typeobj.rst:1029 #: ../../c-api/typeobj.rst:1070 ../../c-api/typeobj.rst:1097 @@ -1964,7 +2401,7 @@ msgstr "" #: ../../c-api/typeobj.rst:2146 ../../c-api/typeobj.rst:2187 #: ../../c-api/typeobj.rst:2217 ../../c-api/typeobj.rst:2250 msgid "**Default:**" -msgstr "" +msgstr "**Vorgabe:**" #: ../../c-api/typeobj.rst:950 msgid "" @@ -1972,6 +2409,9 @@ msgid "" "returned, where ``%s`` is replaced by the type name, and ``%p`` by the " "object's memory address." msgstr "" +"Ist dieses Feld nicht gesetzt, wird eine Zeichenkette der Form ``<%s object " +"at %p>`` zurückgegeben, wobei ``%s`` durch den Typnamen und ``%p`` durch die " +"Speicheradresse des Objekts ersetzt wird." #: ../../c-api/typeobj.rst:957 msgid "" @@ -1979,12 +2419,17 @@ msgid "" "objects which implement the number protocol. These fields are documented " "in :ref:`number-structs`." msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die das Zahlenprotokoll umsetzen. Diese Felder sind " +"unter :ref:`number-structs` dokumentiert." #: ../../c-api/typeobj.rst:963 msgid "" "The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the " "contained fields are inherited individually." msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_number` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." #: ../../c-api/typeobj.rst:969 msgid "" @@ -1992,12 +2437,17 @@ msgid "" "objects which implement the sequence protocol. These fields are documented " "in :ref:`sequence-structs`." msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die das Sequenzprotokoll umsetzen. Diese Felder sind " +"unter :ref:`sequence-structs` dokumentiert." #: ../../c-api/typeobj.rst:975 msgid "" "The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the " "contained fields are inherited individually." msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_sequence` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." #: ../../c-api/typeobj.rst:981 msgid "" @@ -2005,26 +2455,33 @@ msgid "" "objects which implement the mapping protocol. These fields are documented " "in :ref:`mapping-structs`." msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die das Mapping-Protokoll umsetzen. Diese Felder sind " +"unter :ref:`mapping-structs` dokumentiert." #: ../../c-api/typeobj.rst:987 msgid "" "The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the " "contained fields are inherited individually." msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_mapping` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." #: ../../c-api/typeobj.rst:997 msgid "" "An optional pointer to a function that implements the built-in " "function :func:`hash`." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die die integrierte " +"Funktion :func:`hash` umsetzt." #: ../../c-api/typeobj.rst:1000 msgid "The signature is the same as for :c:func:`PyObject_Hash`::" -msgstr "" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Hash`::" #: ../../c-api/typeobj.rst:1002 msgid "Py_hash_t tp_hash(PyObject *);" -msgstr "" +msgstr "Py_hash_t tp_hash(PyObject *);" #: ../../c-api/typeobj.rst:1004 msgid "" @@ -2032,6 +2489,9 @@ msgid "" "error occurs during the computation of the hash value, the function should " "set an exception and return ``-1``." msgstr "" +"Der Wert ``-1`` sollte nicht als gewöhnlicher Rückgabewert verwendet werden. " +"Tritt bei der Berechnung des Hash-Werts ein Fehler auf, sollte die Funktion " +"eine Ausnahme setzen und ``-1`` zurückgeben." #: ../../c-api/typeobj.rst:1008 msgid "" @@ -2040,6 +2500,10 @@ msgid "" "raises :exc:`TypeError`. This is the same as setting it " "to :c:func:`PyObject_HashNotImplemented`." msgstr "" +"Ist dieses Feld nicht gesetzt " +"(*und* :c:member:`~PyTypeObject.tp_richcompare` ebenfalls nicht), löst der " +"Versuch, den Hash des Objekts zu bilden, ein :exc:`TypeError` aus. Das " +"entspricht dem Setzen auf :c:func:`PyObject_HashNotImplemented`." #: ../../c-api/typeobj.rst:1012 msgid "" @@ -2051,10 +2515,18 @@ msgid "" "the Python level will result in the ``tp_hash`` slot being set " "to :c:func:`PyObject_HashNotImplemented`." msgstr "" +"Dieses Feld lässt sich ausdrücklich " +"auf :c:func:`PyObject_HashNotImplemented` setzen, um das Erben der hash-" +"Methode von einem übergeordneten Typ zu unterbinden. Das wird als " +"Entsprechung zu ``__hash__ = None`` auf Python-Ebene ausgelegt und führt " +"dazu, dass ``isinstance(o, collections.Hashable)`` richtigerweise ``False`` " +"zurückgibt. Beachte, dass auch die Umkehrung gilt: ``__hash__ = None`` auf " +"Python-Ebene an einer Klasse zu setzen führt dazu, dass der Slot ``tp_hash`` " +"auf :c:func:`PyObject_HashNotImplemented` gesetzt wird." #: ../../c-api/typeobj.rst:1022 ../../c-api/typeobj.rst:1798 msgid "Group: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject.tp_richcompare`" -msgstr "" +msgstr "Gruppe: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject.tp_richcompare`" #: ../../c-api/typeobj.rst:1024 msgid "" @@ -2065,10 +2537,16 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_richcompare` " "and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_richcompare` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_richcompare` als " +"auch :c:member:`~PyTypeObject.tp_hash`, " +"wenn :c:member:`~PyTypeObject.tp_richcompare` " +"und :c:member:`~PyTypeObject.tp_hash` des Untertyps beide ``NULL`` sind." #: ../../c-api/typeobj.rst:1031 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericHash`." -msgstr "" +msgstr ":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericHash`." #: ../../c-api/typeobj.rst:1038 msgid "" @@ -2076,10 +2554,13 @@ msgid "" "should be ``NULL`` if the object is not callable. The signature is the same " "as for :c:func:`PyObject_Call`::" msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die das Aufrufen des Objekts " +"umsetzt. Ist das Objekt nicht aufrufbar, sollte dies ``NULL`` sein. Die " +"Signatur ist dieselbe wie bei :c:func:`PyObject_Call`::" #: ../../c-api/typeobj.rst:1042 msgid "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" -msgstr "" +msgstr "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" #: ../../c-api/typeobj.rst:1053 msgid "" @@ -2089,14 +2570,19 @@ msgid "" "calls :c:func:`PyObject_Str` to do the actual work, " "and :c:func:`PyObject_Str` will call this handler.)" msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die den integrierten " +"Vorgang :func:`str` umsetzt. (Beachte, dass :class:`str` inzwischen ein Typ " +"ist und :func:`str` den Konstruktor dieses Typs aufruft. Dieser Konstruktor " +"ruft :c:func:`PyObject_Str` auf, um die eigentliche Arbeit zu erledigen, " +"und :c:func:`PyObject_Str` ruft diesen Handler auf.)" #: ../../c-api/typeobj.rst:1058 msgid "The signature is the same as for :c:func:`PyObject_Str`::" -msgstr "" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Str`::" #: ../../c-api/typeobj.rst:1060 msgid "PyObject *tp_str(PyObject *self);" -msgstr "" +msgstr "PyObject *tp_str(PyObject *self);" #: ../../c-api/typeobj.rst:1062 msgid "" @@ -2105,24 +2591,29 @@ msgid "" "representation that will be used, among other things, by the :func:`print` " "function." msgstr "" +"Die Funktion muss eine Zeichenkette oder ein Unicode-Objekt zurückgeben. Sie " +"sollte eine „freundliche“ Textdarstellung des Objekts sein, denn das ist die " +"Darstellung, die unter anderem die Funktion :func:`print` verwendet." #: ../../c-api/typeobj.rst:1072 msgid "" "When this field is not set, :c:func:`PyObject_Repr` is called to return a " "string representation." msgstr "" +"Ist dieses Feld nicht gesetzt, wird :c:func:`PyObject_Repr` aufgerufen, um " +"eine Textdarstellung zurückzugeben." #: ../../c-api/typeobj.rst:1080 msgid "An optional pointer to the get-attribute function." -msgstr "" +msgstr "Ein wahlfreier Zeiger auf die Funktion zum Lesen eines Attributs." #: ../../c-api/typeobj.rst:1082 msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::" -msgstr "" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_GetAttr`::" #: ../../c-api/typeobj.rst:1084 msgid "PyObject *tp_getattro(PyObject *self, PyObject *attr);" -msgstr "" +msgstr "PyObject *tp_getattro(PyObject *self, PyObject *attr);" #: ../../c-api/typeobj.rst:1086 msgid "" @@ -2130,6 +2621,9 @@ msgid "" "to :c:func:`PyObject_GenericGetAttr`, which implements the normal way of " "looking for object attributes." msgstr "" +"Üblicherweise ist es praktisch, dieses Feld " +"auf :c:func:`PyObject_GenericGetAttr` zu setzen, was die gewöhnliche Art " +"umsetzt, Objektattribute nachzuschlagen." #: ../../c-api/typeobj.rst:1093 msgid "" @@ -2140,18 +2634,25 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_getattr` " "and :c:member:`~PyTypeObject.tp_getattro` are both ``NULL``." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_getattr` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_getattr` als " +"auch :c:member:`~PyTypeObject.tp_getattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_getattr` " +"und :c:member:`~PyTypeObject.tp_getattro` des Untertyps beide ``NULL`` sind." #: ../../c-api/typeobj.rst:1099 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`." msgstr "" +":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericGetAttr`." #: ../../c-api/typeobj.rst:1108 msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::" -msgstr "" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_SetAttr`::" #: ../../c-api/typeobj.rst:1110 msgid "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" -msgstr "" +msgstr "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" #: ../../c-api/typeobj.rst:1112 msgid "" @@ -2160,6 +2661,10 @@ msgid "" "to :c:func:`PyObject_GenericSetAttr`, which implements the normal way of " "setting object attributes." msgstr "" +"Außerdem muss unterstützt werden, dass *value* auf ``NULL`` gesetzt wird, um " +"ein Attribut zu löschen. Üblicherweise ist es praktisch, dieses Feld " +"auf :c:func:`PyObject_GenericSetAttr` zu setzen, was die gewöhnliche Art " +"umsetzt, Objektattribute zu setzen." #: ../../c-api/typeobj.rst:1121 msgid "" @@ -2170,10 +2675,17 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_setattr` " "and :c:member:`~PyTypeObject.tp_setattro` are both ``NULL``." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_setattr` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_setattr` als " +"auch :c:member:`~PyTypeObject.tp_setattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_setattr` " +"und :c:member:`~PyTypeObject.tp_setattro` des Untertyps beide ``NULL`` sind." #: ../../c-api/typeobj.rst:1127 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`." msgstr "" +":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericSetAttr`." #: ../../c-api/typeobj.rst:1132 msgid "" @@ -2181,18 +2693,25 @@ msgid "" "objects which implement the buffer interface. These fields are documented " "in :ref:`buffer-structs`." msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die die Puffer-Schnittstelle umsetzen. Diese Felder sind " +"unter :ref:`buffer-structs` dokumentiert." #: ../../c-api/typeobj.rst:1138 msgid "" "The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the " "contained fields are inherited individually." msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_buffer` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." #: ../../c-api/typeobj.rst:1144 msgid "" "See :c:macro:`Py_tp_flags` for the corresponding :c:member:`Slot ID " "`." msgstr "" +"Die zugehörige :c:member:`Slot-ID ` steht " +"unter :c:macro:`Py_tp_flags`." #: ../../c-api/typeobj.rst:1147 msgid "" @@ -2205,6 +2724,15 @@ msgid "" "guards must not be accessed and must be considered to have a zero or " "``NULL`` value instead." msgstr "" +"Dieses Feld ist eine Bitmaske verschiedener Flags. Manche Flags zeigen " +"abweichendes Verhalten in bestimmten Situationen an, andere zeigen an, dass " +"bestimmte Felder im Typobjekt (oder in den " +"über :c:member:`~PyTypeObject.tp_as_number`, :c:member:`~PyTypeObject.tp_as_sequence`, :c:member:`~PyTypeObject.tp_as_mapping` " +"und :c:member:`~PyTypeObject.tp_as_buffer` referenzierten " +"Erweiterungsstrukturen), die früher nicht immer vorhanden waren, gültig " +"sind. Ist ein solches Flag-Bit nicht gesetzt, darf auf die Typfelder, die es " +"absichert, nicht zugegriffen werden. Sie sind stattdessen als null oder " +"``NULL`` zu betrachten." #: ../../c-api/typeobj.rst:1157 msgid "" @@ -2221,16 +2749,31 @@ msgid "" "and :c:member:`~PyTypeObject.tp_clear` fields in the subtype exist and have " "``NULL`` values." msgstr "" +"Die Vererbung dieses Feldes ist kompliziert. Die meisten Flag-Bits werden " +"einzeln vererbt, das heißt: Ist ein Flag-Bit im Basistyp gesetzt, erbt der " +"Untertyp dieses Flag-Bit. Die Flag-Bits, die Erweiterungsstrukturen " +"betreffen, werden streng dann vererbt, wenn die Erweiterungsstruktur vererbt " +"wird, das heißt: Der Wert des Flag-Bits im Basistyp wird zusammen mit einem " +"Zeiger auf die Erweiterungsstruktur in den Untertyp kopiert. Das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` wird gemeinsam mit den " +"Feldern :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` vererbt, also dann, wenn das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` im Untertyp nicht gesetzt ist und die " +"Felder :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` im Untertyp vorhanden sind und " +"``NULL``-Werte haben." #: ../../c-api/typeobj.rst:1172 msgid "" ":c:data:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | " "Py_TPFLAGS_BASETYPE``." msgstr "" +":c:data:`PyBaseObject_Type` verwendet ``Py_TPFLAGS_DEFAULT | " +"Py_TPFLAGS_BASETYPE``." #: ../../c-api/typeobj.rst:1175 msgid "**Bit Masks:**" -msgstr "" +msgstr "**Bitmasken:**" #: ../../c-api/typeobj.rst:1179 msgid "" @@ -2240,6 +2783,11 @@ msgid "" "macro :c:func:`PyType_HasFeature` takes a type and a flags value, *tp* and " "*f*, and checks whether ``tp->tp_flags & f`` is non-zero." msgstr "" +"Derzeit sind die folgenden Bitmasken festgelegt. Sie lassen sich über den " +"Operator ``|`` miteinander verodern, um den Wert des " +"Feldes :c:member:`~PyTypeObject.tp_flags` zu bilden. Das " +"Makro :c:func:`PyType_HasFeature` nimmt einen Typ und einen Flag-Wert, *tp* " +"und *f*, und prüft, ob ``tp->tp_flags & f`` ungleich null ist." #: ../../c-api/typeobj.rst:1186 msgid "" @@ -2253,12 +2801,22 @@ msgid "" "also :ref:`support garbage collection ` as they " "can form a reference cycle with their own module object." msgstr "" +"Dieses Bit ist gesetzt, wenn das Typobjekt selbst auf dem Heap angelegt ist, " +"zum Beispiel bei Typen, die dynamisch über :c:func:`PyType_FromSpec` erzeugt " +"werden. In diesem Fall gilt das Feld :c:member:`~PyObject.ob_type` seiner " +"Instanzen als Referenz auf den Typ, und das Typobjekt wird mit INCREF " +"versehen, wenn eine neue Instanz erzeugt wird, und mit DECREF, wenn eine " +"Instanz zerstört wird (das gilt nicht für Instanzen von Untertypen, sondern " +"nur für den Typ, auf den das ob_type der Instanz verweist, bekommt INCREF " +"oder DECREF). Heap-Typen sollten außerdem :ref:`die Speicherbereinigung " +"unterstützen `, da sie mit ihrem eigenen " +"Modulobjekt einen Referenzzyklus bilden können." #: ../../c-api/typeobj.rst:1197 ../../c-api/typeobj.rst:1208 #: ../../c-api/typeobj.rst:1218 ../../c-api/typeobj.rst:1228 #: ../../c-api/typeobj.rst:1260 msgid "???" -msgstr "" +msgstr "???" #: ../../c-api/typeobj.rst:1202 msgid "" @@ -2266,18 +2824,25 @@ msgid "" "If this bit is clear, the type cannot be subtyped (similar to a \"final\" " "class in Java)." msgstr "" +"Dieses Bit ist gesetzt, wenn der Typ als Basistyp eines anderen Typs " +"verwendet werden kann. Ist dieses Bit nicht gesetzt, lässt sich vom Typ " +"keine Unterklasse bilden (ähnlich einer „final“-Klasse in Java)." #: ../../c-api/typeobj.rst:1213 msgid "" "This bit is set when the type object has been fully initialized " "by :c:func:`PyType_Ready`." msgstr "" +"Dieses Bit ist gesetzt, wenn das Typobjekt von :c:func:`PyType_Ready` " +"vollständig initialisiert wurde." #: ../../c-api/typeobj.rst:1223 msgid "" "This bit is set while :c:func:`PyType_Ready` is in the process of " "initializing the type object." msgstr "" +"Dieses Bit ist gesetzt, während :c:func:`PyType_Ready` das Typobjekt gerade " +"initialisiert." #: ../../c-api/typeobj.rst:1233 msgid "" @@ -2288,11 +2853,17 @@ msgid "" "(see :c:member:`~PyTypeObject.tp_free`) using :c:func:`PyObject_GC_Del`. " "More information in section :ref:`supporting-cycle-detection`." msgstr "" +"Dieses Bit ist gesetzt, wenn das Objekt die Speicherbereinigung unterstützt. " +"Ist dieses Bit gesetzt, muss Speicher für neue Instanzen " +"(siehe :c:member:`~PyTypeObject.tp_alloc`) über :c:macro:`PyObject_GC_New` " +"oder :c:func:`PyType_GenericAlloc` angefordert und " +"(siehe :c:member:`~PyTypeObject.tp_free`) über :c:func:`PyObject_GC_Del` " +"freigegeben werden. Mehr dazu im Abschnitt :ref:`supporting-cycle-detection`." #: ../../c-api/typeobj.rst:1242 ../../c-api/typeobj.rst:1585 #: ../../c-api/typeobj.rst:1731 msgid "Group: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject.tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" -msgstr "" +msgstr "Gruppe: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject.tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" #: ../../c-api/typeobj.rst:1244 msgid "" @@ -2304,6 +2875,13 @@ msgid "" "and :c:member:`~PyTypeObject.tp_clear` fields in the subtype exist and have " "``NULL`` values." msgstr "" +"Das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_GC` wird gemeinsam mit den " +"Feldern :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` vererbt, also dann, wenn das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` im Untertyp nicht gesetzt ist und die " +"Felder :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` im Untertyp vorhanden sind und " +"``NULL``-Werte haben." #: ../../c-api/typeobj.rst:1254 msgid "" @@ -2311,26 +2889,34 @@ msgid "" "fields in the type object and its extension structures. Currently, it " "includes the following bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." msgstr "" +"Das ist eine Bitmaske aller Bits, die das Vorhandensein bestimmter Felder im " +"Typobjekt und seinen Erweiterungsstrukturen betreffen. Derzeit umfasst sie " +"die folgenden Bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." #: ../../c-api/typeobj.rst:1265 msgid "This bit indicates that objects behave like unbound methods." msgstr "" +"Dieses Bit zeigt an, dass Objekte sich wie ungebundene Methoden verhalten." #: ../../c-api/typeobj.rst:1267 msgid "If this flag is set for ``type(meth)``, then:" -msgstr "" +msgstr "Ist dieses Flag für ``type(meth)`` gesetzt, gilt:" #: ../../c-api/typeobj.rst:1269 msgid "" "``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be " "equivalent to ``meth(obj, *args, **kwds)``." msgstr "" +"``meth.__get__(obj, cls)(*args, **kwds)`` (mit ``obj`` nicht None) muss " +"gleichbedeutend sein mit ``meth(obj, *args, **kwds)``." #: ../../c-api/typeobj.rst:1272 msgid "" "``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to " "``meth(*args, **kwds)``." msgstr "" +"``meth.__get__(None, cls)(*args, **kwds)`` muss gleichbedeutend sein mit " +"``meth(*args, **kwds)``." #: ../../c-api/typeobj.rst:1275 msgid "" @@ -2338,6 +2924,9 @@ msgid "" "``obj.meth()``: it avoids creating a temporary \"bound method\" object for " "``obj.meth``." msgstr "" +"Dieses Flag ermöglicht eine Optimierung für typische Methodenaufrufe wie " +"``obj.meth()``: Es vermeidet, für ``obj.meth`` ein vorübergehendes Objekt " +"für die „gebundene Methode“ zu erzeugen." #: ../../c-api/typeobj.rst:1283 msgid "" @@ -2345,6 +2934,10 @@ msgid "" "the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` flag set. For extension types, it " "is inherited whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited." msgstr "" +"Dieses Flag wird nie an Typen vererbt, bei denen das " +"Flag :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` nicht gesetzt ist. Bei " +"Erweiterungstypen wird es immer dann vererbt, " +"wenn :c:member:`~PyTypeObject.tp_descr_get` vererbt wird." #: ../../c-api/typeobj.rst:1289 msgid "" @@ -2352,34 +2945,49 @@ msgid "" "a :attr:`~object.__dict__` attribute, and that the space for the dictionary " "is managed by the VM." msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse ein " +"Attribut :attr:`~object.__dict__` haben und dass die VM den Platz für das " +"Dictionary verwaltet." #: ../../c-api/typeobj.rst:1292 ../../c-api/typeobj.rst:1310 msgid "If this flag is set, :c:macro:`Py_TPFLAGS_HAVE_GC` must also be set." msgstr "" +"Ist dieses Flag gesetzt, muss auch :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt " +"sein." #: ../../c-api/typeobj.rst:1294 msgid "" "The type traverse function must call :c:func:`PyObject_VisitManagedDict` and " "its clear function must call :c:func:`PyObject_ClearManagedDict`." msgstr "" +"Die traverse-Funktion des Typs muss :c:func:`PyObject_VisitManagedDict` " +"aufrufen und seine clear-Funktion :c:func:`PyObject_ClearManagedDict`." #: ../../c-api/typeobj.rst:1301 msgid "" "This flag is inherited unless the :c:member:`~PyTypeObject.tp_dictoffset` " "field is set in a superclass." msgstr "" +"Dieses Flag wird vererbt, sofern das " +"Feld :c:member:`~PyTypeObject.tp_dictoffset` nicht in einer Oberklasse " +"gesetzt ist." #: ../../c-api/typeobj.rst:1307 msgid "" "This bit indicates that instances of the class should be weakly " "referenceable." msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse schwach referenzierbar sein " +"sollen." #: ../../c-api/typeobj.rst:1316 msgid "" "This flag is inherited unless " "the :c:member:`~PyTypeObject.tp_weaklistoffset` field is set in a superclass." msgstr "" +"Dieses Flag wird vererbt, sofern das " +"Feld :c:member:`~PyTypeObject.tp_weaklistoffset` nicht in einer Oberklasse " +"gesetzt ist." #: ../../c-api/typeobj.rst:1322 msgid "" @@ -2387,6 +2995,9 @@ msgid "" "before the object. Currently, this macro is equivalent " "to :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`." msgstr "" +"Diese Bits zeigen an, dass die VM einige Felder verwaltet, indem sie sie vor " +"dem Objekt ablegt. Derzeit entspricht dieses " +"Makro :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`." #: ../../c-api/typeobj.rst:1326 msgid "" @@ -2394,12 +3005,17 @@ msgid "" "stable and may change in a future version. Prefer using individual flags " "instead." msgstr "" +"Der Wert dieses Makros hängt von der Umsetzung der VM ab, er ist deshalb " +"nicht stabil und kann sich in einer künftigen Version ändern. Verwende " +"besser die einzelnen Flags." #: ../../c-api/typeobj.rst:1335 msgid "" "Only usable with variable-size types, i.e. ones with non-" "zero :c:member:`~PyTypeObject.tp_itemsize`." msgstr "" +"Nur bei Typen veränderlicher Größe verwendbar, also solchen mit " +"einem :c:member:`~PyTypeObject.tp_itemsize` ungleich null." #: ../../c-api/typeobj.rst:1338 msgid "" @@ -2407,16 +3023,22 @@ msgid "" "the end of the instance's memory area, at an offset of ``Py_TYPE(obj)-" ">tp_basicsize`` (which may be different in each subclass)." msgstr "" +"Zeigt an, dass der Teil veränderlicher Größe einer Instanz dieses Typs am " +"Ende des Speicherbereichs der Instanz liegt, beim Versatz ``Py_TYPE(obj)-" +">tp_basicsize`` (der in jeder Unterklasse anders sein kann)." #: ../../c-api/typeobj.rst:1343 msgid "" "When setting this flag, be sure that all superclasses either use this memory " "layout, or are not variable-sized. Python does not check this." msgstr "" +"Vergewissere dich beim Setzen dieses Flags, dass alle Oberklassen entweder " +"denselben Speicheraufbau verwenden oder nicht von veränderlicher Größe sind. " +"Python prüft das nicht." #: ../../c-api/typeobj.rst:1351 msgid "This flag is inherited." -msgstr "" +msgstr "Dieses Flag wird vererbt." #: ../../c-api/typeobj.rst:1365 msgid "" @@ -2429,12 +3051,22 @@ msgid "" "interacts with such types will behave differently depending on what kind of " "check is used." msgstr "" +"Funktionen wie :c:func:`PyLong_Check` rufen :c:func:`PyType_FastSubclass` " +"mit einem dieser Flags auf, um schnell festzustellen, ob ein Typ eine " +"Unterklasse eines integrierten Typs ist. Solche gezielten Prüfungen sind " +"schneller als eine allgemeine Prüfung wie :c:func:`PyObject_IsInstance`. Bei " +"eigenen Typen, die von integrierten Typen erben, " +"sollte :c:member:`~PyTypeObject.tp_flags` passend gesetzt sein, sonst " +"verhält sich der Code, der mit solchen Typen umgeht, je nach verwendeter " +"Prüfung unterschiedlich." #: ../../c-api/typeobj.rst:1376 msgid "" "This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is " "present in the type structure." msgstr "" +"Dieses Bit ist gesetzt, wenn der Slot :c:member:`~PyTypeObject.tp_finalize` " +"in der Typstruktur vorhanden ist." #: ../../c-api/typeobj.rst:1381 msgid "" @@ -2442,6 +3074,9 @@ msgid "" "the :c:member:`~PyTypeObject.tp_finalize` slot is always present in the type " "structure." msgstr "" +"Dieses Flag ist nicht mehr nötig, weil der Interpreter davon ausgeht, dass " +"der Slot :c:member:`~PyTypeObject.tp_finalize` in der Typstruktur immer " +"vorhanden ist." #: ../../c-api/typeobj.rst:1392 msgid "" @@ -2449,48 +3084,61 @@ msgid "" "`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for " "details." msgstr "" +"Dieses Bit ist gesetzt, wenn die Klasse das :ref:`vectorcall-Protokoll " +"` umsetzt. Einzelheiten stehen " +"unter :c:member:`~PyTypeObject.tp_vectorcall_offset`." #: ../../c-api/typeobj.rst:1398 msgid "" "This bit is inherited if :c:member:`~PyTypeObject.tp_call` is also inherited." msgstr "" +"Dieses Bit wird vererbt, wenn auch :c:member:`~PyTypeObject.tp_call` vererbt " +"wird." #: ../../c-api/typeobj.rst:1401 msgid "as ``_Py_TPFLAGS_HAVE_VECTORCALL``" -msgstr "" +msgstr "als ``_Py_TPFLAGS_HAVE_VECTORCALL``" #: ../../c-api/typeobj.rst:1405 msgid "" "Renamed to the current name, without the leading underscore. The old " "provisional name is :term:`soft deprecated`." msgstr "" +"Auf den jetzigen Namen umbenannt, ohne den führenden Unterstrich. Der alte " +"vorläufige Name ist :term:`sanft abgekündigt `." #: ../../c-api/typeobj.rst:1410 msgid "" "This flag is now removed from a class when the " "class's :py:meth:`~object.__call__` method is reassigned." msgstr "" +"Dieses Flag wird jetzt von einer Klasse entfernt, wenn die " +"Methode :py:meth:`~object.__call__` der Klasse neu zugewiesen wird." #: ../../c-api/typeobj.rst:1413 msgid "This flag can now be inherited by mutable classes." -msgstr "" +msgstr "Dieses Flag kann jetzt von veränderlichen Klassen geerbt werden." #: ../../c-api/typeobj.rst:1417 msgid "" "This bit is set for type objects that are immutable: type attributes cannot " "be set nor deleted." msgstr "" +"Dieses Bit ist bei Typobjekten gesetzt, die unveränderlich sind: " +"Typattribute lassen sich weder setzen noch löschen." #: ../../c-api/typeobj.rst:1419 msgid "" ":c:func:`PyType_Ready` automatically applies this flag to :ref:`static types " "`." msgstr "" +":c:func:`PyType_Ready` setzt dieses Flag bei :ref:`statischen Typen ` automatisch." #: ../../c-api/typeobj.rst:1424 ../../c-api/typeobj.rst:1533 #: ../../c-api/typeobj.rst:1545 msgid "This flag is not inherited." -msgstr "" +msgstr "Dieses Flag wird nicht vererbt." #: ../../c-api/typeobj.rst:1430 msgid "" @@ -2498,12 +3146,18 @@ msgid "" "set :c:member:`~PyTypeObject.tp_new` to NULL and don't create the " "``__new__`` key in the type dictionary." msgstr "" +"Verbietet das Erzeugen von Instanzen des Typs: Es " +"setzt :c:member:`~PyTypeObject.tp_new` auf NULL und legt den Schlüssel " +"``__new__`` im Dictionary des Typs nicht an." #: ../../c-api/typeobj.rst:1434 msgid "" "The flag must be set before creating the type, not after. For example, it " "must be set before :c:func:`PyType_Ready` is called on the type." msgstr "" +"Das Flag muss gesetzt werden, bevor der Typ erzeugt wird, nicht danach. Es " +"muss zum Beispiel gesetzt sein, bevor :c:func:`PyType_Ready` auf dem Typ " +"aufgerufen wird." #: ../../c-api/typeobj.rst:1437 msgid "" @@ -2511,6 +3165,9 @@ msgid "" "if :c:member:`~PyTypeObject.tp_base` is NULL or ``&PyBaseObject_Type`` " "and :c:member:`~PyTypeObject.tp_new` is NULL." msgstr "" +"Bei :ref:`statischen Typen ` wird das Flag automatisch " +"gesetzt, wenn :c:member:`~PyTypeObject.tp_base` NULL oder " +"``&PyBaseObject_Type`` ist und :c:member:`~PyTypeObject.tp_new` NULL ist." #: ../../c-api/typeobj.rst:1443 msgid "" @@ -2518,6 +3175,9 @@ msgid "" "unless they provide a non-NULL :c:member:`~PyTypeObject.tp_new` (which is " "only possible via the C API)." msgstr "" +"Dieses Flag wird nicht vererbt. Unterklassen lassen sich allerdings nur dann " +"instanziieren, wenn sie ein :c:member:`~PyTypeObject.tp_new` ungleich NULL " +"bereitstellen (was nur über die C-API möglich ist)." #: ../../c-api/typeobj.rst:1450 msgid "" @@ -2525,6 +3185,11 @@ msgid "" "subclasses (e.g. for an :term:`abstract base class`), do not use this flag. " "Instead, make :c:member:`~PyTypeObject.tp_new` only succeed for subclasses." msgstr "" +"Um das unmittelbare Instanziieren einer Klasse zu verbieten, das " +"Instanziieren ihrer Unterklassen aber zu erlauben (etwa bei " +"einer :term:`abstrakten Basisklasse `), verwende dieses " +"Flag nicht. Lass stattdessen :c:member:`~PyTypeObject.tp_new` nur bei " +"Unterklassen gelingen." #: ../../c-api/typeobj.rst:1461 msgid "" @@ -2533,22 +3198,31 @@ msgid "" "set when registering or subclassing :class:`collections.abc.Mapping`, and " "unset when registering :class:`collections.abc.Sequence`." msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse auf Mapping-Muster passen " +"können, wenn sie als Gegenstand eines :keyword:`match`-Blocks verwendet " +"werden. Es wird beim Registrieren oder Ableiten " +"von :class:`collections.abc.Mapping` automatisch gesetzt und beim " +"Registrieren von :class:`collections.abc.Sequence` gelöscht." #: ../../c-api/typeobj.rst:1468 ../../c-api/typeobj.rst:1490 msgid "" ":c:macro:`Py_TPFLAGS_MAPPING` and :c:macro:`Py_TPFLAGS_SEQUENCE` are " "mutually exclusive; it is an error to enable both flags simultaneously." msgstr "" +":c:macro:`Py_TPFLAGS_MAPPING` und :c:macro:`Py_TPFLAGS_SEQUENCE` schließen " +"einander aus. Beide Flags gleichzeitig einzuschalten ist ein Fehler." #: ../../c-api/typeobj.rst:1473 msgid "" "This flag is inherited by types that do not already " "set :c:macro:`Py_TPFLAGS_SEQUENCE`." msgstr "" +"Dieses Flag wird an Typen vererbt, die nicht " +"bereits :c:macro:`Py_TPFLAGS_SEQUENCE` setzen." #: ../../c-api/typeobj.rst:1476 ../../c-api/typeobj.rst:1498 msgid ":pep:`634` -- Structural Pattern Matching: Specification" -msgstr "" +msgstr ":pep:`634` -- Structural Pattern Matching: Specification" #: ../../c-api/typeobj.rst:1483 msgid "" @@ -2557,24 +3231,35 @@ msgid "" "set when registering or subclassing :class:`collections.abc.Sequence`, and " "unset when registering :class:`collections.abc.Mapping`." msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse auf Sequenzmuster passen " +"können, wenn sie als Gegenstand eines :keyword:`match`-Blocks verwendet " +"werden. Es wird beim Registrieren oder Ableiten " +"von :class:`collections.abc.Sequence` automatisch gesetzt und beim " +"Registrieren von :class:`collections.abc.Mapping` gelöscht." #: ../../c-api/typeobj.rst:1495 msgid "" "This flag is inherited by types that do not already " "set :c:macro:`Py_TPFLAGS_MAPPING`." msgstr "" +"Dieses Flag wird an Typen vererbt, die nicht " +"bereits :c:macro:`Py_TPFLAGS_MAPPING` setzen." #: ../../c-api/typeobj.rst:1505 msgid "" "Internal. Do not set or unset this flag. To indicate that a class has " "changed call :c:func:`PyType_Modified`" msgstr "" +"Intern. Setze oder lösche dieses Flag nicht. Um anzuzeigen, dass eine Klasse " +"sich geändert hat, rufe :c:func:`PyType_Modified` auf." #: ../../c-api/typeobj.rst:1509 msgid "" "This flag is present in header files, but is not be used. It will be removed " "in a future version of CPython" msgstr "" +"Dieses Flag ist in Header-Dateien vorhanden, wird aber nicht verwendet. Es " +"wird in einer künftigen Version von CPython entfernt." #: ../../c-api/typeobj.rst:1515 msgid "" @@ -2582,6 +3267,9 @@ msgid "" "the :c:member:`~PyTypeObject.tp_version_tag` field was available and " "initialized." msgstr "" +"Dieses Makro tut nichts. Früher zeigte es an, dass das " +"Feld :c:member:`~PyTypeObject.tp_version_tag` verfügbar und initialisiert " +"war." #: ../../c-api/typeobj.rst:1525 msgid "" @@ -2589,32 +3277,41 @@ msgid "" "values\" array (containing the object's attributes) placed directly after " "the end of the object." msgstr "" +"Dieses Bit zeigt an, dass Instanzen dieses Typs ein Array mit „Inline-" +"Werten“ haben (das die Attribute des Objekts enthält), das unmittelbar " +"hinter dem Ende des Objekts liegt." #: ../../c-api/typeobj.rst:1529 msgid "This requires that :c:macro:`Py_TPFLAGS_HAVE_GC` is set." -msgstr "" +msgstr "Das setzt voraus, dass :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt ist." #: ../../c-api/typeobj.rst:1540 msgid "" "This bit indicates that this is an abstract type and therefore cannot be " "instantiated." msgstr "" +"Dieses Bit zeigt an, dass dies ein abstrakter Typ ist und sich deshalb nicht " +"instanziieren lässt." #: ../../c-api/typeobj.rst:1548 msgid ":mod:`abc`" -msgstr "" +msgstr ":mod:`abc`" #: ../../c-api/typeobj.rst:1553 msgid "" "Internal. Do not set or unset this flag. Historically, this was a reserved " "flag for use in Stackless Python." msgstr "" +"Intern. Setze oder lösche dieses Flag nicht. Früher war das ein reserviertes " +"Flag zur Verwendung in Stackless Python." #: ../../c-api/typeobj.rst:1557 msgid "" "This flag is present in header files, but is not be used. This may be " "removed in a future version of CPython." msgstr "" +"Dieses Flag ist in Header-Dateien vorhanden, wird aber nicht verwendet. Es " +"wird möglicherweise in einer künftigen Version von CPython entfernt." #: ../../c-api/typeobj.rst:1565 msgid "" @@ -2622,20 +3319,26 @@ msgid "" "this type object. This is exposed as the :attr:`~type.__doc__` attribute on " "the type and instances of the type." msgstr "" +"Ein wahlfreier Zeiger auf eine NUL-terminierte C-Zeichenkette mit dem " +"Docstring für dieses Typobjekt. Er wird als Attribut :attr:`~type.__doc__` " +"am Typ und an den Instanzen des Typs nach außen gegeben." #: ../../c-api/typeobj.rst:1571 msgid "This field is *not* inherited by subtypes." -msgstr "" +msgstr "Dieses Feld wird *nicht* an Untertypen vererbt." #: ../../c-api/typeobj.rst:1578 msgid "" "An optional pointer to a traversal function for the garbage collector. This " "is only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set." msgstr "" +"Ein wahlfreier Zeiger auf eine traverse-Funktion für die " +"Speicherbereinigung. Sie wird nur verwendet, wenn das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt ist." #: ../../c-api/typeobj.rst:1581 msgid "See :ref:`gc-traversal` for documentation." -msgstr "" +msgstr "Die Dokumentation dazu steht unter :ref:`gc-traversal`." #: ../../c-api/typeobj.rst:1587 msgid "" @@ -2646,14 +3349,20 @@ msgid "" "and :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type " "if they are all zero in the subtype." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_clear` und dem Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` vererbt: Das Flag-" +"Bit, :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` werden alle vom Basistyp geerbt, wenn " +"sie im Untertyp alle null sind." #: ../../c-api/typeobj.rst:1597 msgid "An optional pointer to a clear function. The signature is::" -msgstr "" +msgstr "Ein wahlfreier Zeiger auf eine clear-Funktion. Die Signatur lautet::" #: ../../c-api/typeobj.rst:1599 msgid "int tp_clear(PyObject *);" -msgstr "" +msgstr "int tp_clear(PyObject *);" #: ../../c-api/typeobj.rst:1601 msgid "" @@ -2662,6 +3371,11 @@ msgid "" "cleared object is a partially destroyed object; the object is not obligated " "to satisfy design invariants held during normal use." msgstr "" +"Der Zweck dieser Funktion ist es, Referenzzyklen aufzubrechen, die " +"ein :term:`zyklisches Isolat ` verursachen, damit die " +"Objekte gefahrlos zerstört werden können. Ein geleertes Objekt ist ein " +"teilweise zerstörtes Objekt. Es ist nicht verpflichtet, die " +"Entwurfsinvarianten einzuhalten, die im gewöhnlichen Betrieb gelten." #: ../../c-api/typeobj.rst:1606 msgid "" @@ -2673,12 +3387,22 @@ msgid "" "that :c:member:`!tp_clear` might have already been called. Prefer calling " "idempotent functions like :c:func:`Py_CLEAR`.)" msgstr "" +":c:member:`!tp_clear` muss keine Referenzen auf Objekte löschen, die nicht " +"an Referenzzyklen teilnehmen können, etwa Python-Zeichenketten oder ganze " +"Zahlen. Es kann aber bequem sein, alle Referenzen zu leeren und die " +"Funktion :c:member:`~PyTypeObject.tp_dealloc` des Typs so zu schreiben, dass " +"sie :c:member:`!tp_clear` aufruft, um doppelten Code zu vermeiden. (Sei dir " +"bewusst, dass :c:member:`!tp_clear` bereits aufgerufen worden sein kann. " +"Rufe besser idempotente Funktionen wie :c:func:`Py_CLEAR` auf.)" #: ../../c-api/typeobj.rst:1614 msgid "" "Any non-trivial cleanup should be performed " "in :c:member:`~PyTypeObject.tp_finalize` instead of :c:member:`!tp_clear`." msgstr "" +"Jedes nicht triviale Aufräumen sollte " +"in :c:member:`~PyTypeObject.tp_finalize` erfolgen statt in :c:member:`!" +"tp_clear`." #: ../../c-api/typeobj.rst:1619 msgid "" @@ -2686,30 +3410,44 @@ msgid "" "in the :term:`cyclic isolate` may remain indefinitely uncollectable " "(\"leak\"). See :data:`gc.garbage`." msgstr "" +"Gelingt es :c:member:`!tp_clear` nicht, einen Referenzzyklus aufzubrechen, " +"bleiben die Objekte im :term:`zyklischen Isolat ` " +"möglicherweise auf Dauer nicht einsammelbar („Leck“). " +"Siehe :data:`gc.garbage`." #: ../../c-api/typeobj.rst:1625 msgid "" "Referents (direct and indirect) might have already been cleared; they are " "not guaranteed to be in a consistent state." msgstr "" +"Referenzierte Objekte (unmittelbar und mittelbar) können bereits geleert " +"worden sein. Dass sie in einem widerspruchsfreien Zustand sind, ist nicht " +"zugesichert." #: ../../c-api/typeobj.rst:1630 msgid "" "The :c:member:`~PyTypeObject.tp_clear` function can be called from any " "thread." msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_clear` darf aus jedem Thread " +"aufgerufen werden." #: ../../c-api/typeobj.rst:1635 msgid "" "An object is not guaranteed to be automatically cleared before its " "destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called." msgstr "" +"Dass ein Objekt automatisch geleert wird, bevor sein Destruktor " +"(:c:member:`~PyTypeObject.tp_dealloc`) aufgerufen wird, ist nicht " +"zugesichert." #: ../../c-api/typeobj.rst:1638 msgid "" "This function differs from the destructor " "(:c:member:`~PyTypeObject.tp_dealloc`) in the following ways:" msgstr "" +"Diese Funktion unterscheidet sich vom Destruktor " +"(:c:member:`~PyTypeObject.tp_dealloc`) in folgender Hinsicht:" #: ../../c-api/typeobj.rst:1641 msgid "" @@ -2720,6 +3458,12 @@ msgid "" "(e.g., integers) as well as the object's own memory (by " "calling :c:member:`~PyTypeObject.tp_free`)." msgstr "" +"Der Zweck des Leerens eines Objekts ist es, Referenzen auf andere Objekte zu " +"entfernen, die an einem Referenzzyklus teilnehmen könnten. Der Zweck des " +"Destruktors ist dagegen umfassender: Er muss *alle* Ressourcen freigeben, " +"die ihm gehören, auch Referenzen auf Objekte, die an keinem Referenzzyklus " +"teilnehmen können (etwa ganze Zahlen), sowie den Speicher des Objekts selbst " +"(durch Aufruf von :c:member:`~PyTypeObject.tp_free`)." #: ../../c-api/typeobj.rst:1647 msgid "" @@ -2730,6 +3474,12 @@ msgid "" "only called when no (strong) references exist, and as such, must safely " "destroy the object itself by deallocating it." msgstr "" +"Wenn :c:member:`!tp_clear` aufgerufen wird, halten andere Objekte " +"möglicherweise noch Referenzen auf das zu leerende Objekt. Deshalb " +"darf :c:member:`!tp_clear` den Speicher des Objekts selbst nicht freigeben " +"(:c:member:`~PyTypeObject.tp_free`). Der Destruktor wird dagegen erst " +"aufgerufen, wenn keine (starken) Referenzen mehr bestehen, und muss das " +"Objekt deshalb gefahrlos zerstören, indem er es freigibt." #: ../../c-api/typeobj.rst:1653 msgid "" @@ -2738,12 +3488,19 @@ msgid "" "the object becomes unreachable (i.e., either there are no references to the " "object or the object is a member of a :term:`cyclic isolate`)." msgstr "" +":c:member:`!tp_clear` wird möglicherweise nie automatisch aufgerufen. Der " +"Destruktor eines Objekts wird dagegen einige Zeit, nachdem das Objekt " +"unerreichbar geworden ist, automatisch aufgerufen (also wenn entweder keine " +"Referenzen mehr auf das Objekt bestehen oder das Objekt Teil " +"eines :term:`zyklischen Isolats ` ist)." #: ../../c-api/typeobj.rst:1658 msgid "" "No guarantees are made about when, if, or how often Python automatically " "clears an object, except:" msgstr "" +"Darüber, wann, ob und wie oft Python ein Objekt automatisch leert, werden " +"keine Zusagen gemacht, außer:" #: ../../c-api/typeobj.rst:1661 msgid "" @@ -2751,6 +3508,9 @@ msgid "" "there is a reference to it and it is not a member of a :term:`cyclic " "isolate`." msgstr "" +"Python leert ein Objekt nicht automatisch, wenn es erreichbar ist, also wenn " +"eine Referenz darauf besteht und es nicht Teil eines :term:`zyklischen " +"Isolats ` ist." #: ../../c-api/typeobj.rst:1664 msgid "" @@ -2759,6 +3519,11 @@ msgid "" "the finalizer resurrected the object, the object may or may not be " "automatically finalized again before it is cleared.)" msgstr "" +"Python leert ein Objekt nicht automatisch, wenn es nicht automatisch " +"finalisiert wurde (siehe :c:member:`~PyTypeObject.tp_finalize`). (Hat der " +"Finalisierer das Objekt wieder auferstehen lassen, kann es sein, dass das " +"Objekt vor dem Leeren noch einmal automatisch finalisiert wird oder auch " +"nicht.)" #: ../../c-api/typeobj.rst:1668 msgid "" @@ -2766,6 +3531,9 @@ msgid "" "automatically clear it if any member of the cyclic isolate has not yet been " "automatically finalized (:c:member:`~PyTypeObject.tp_finalize`)." msgstr "" +"Ist ein Objekt Teil eines :term:`zyklischen Isolats `, leert " +"Python es nicht automatisch, solange noch ein Mitglied des Isolats nicht " +"automatisch finalisiert wurde (:c:member:`~PyTypeObject.tp_finalize`)." #: ../../c-api/typeobj.rst:1671 msgid "" @@ -2774,12 +3542,18 @@ msgid "" "of breaking a reference cycle does not invalidate the ``self`` pointer " "while :c:member:`!tp_clear` is still executing." msgstr "" +"Python zerstört ein Objekt erst, nachdem alle automatischen Aufrufe seiner " +"Funktion :c:member:`!tp_clear` zurückgekehrt sind. Damit ist sichergestellt, " +"dass das Aufbrechen eines Referenzzyklus den Zeiger ``self`` nicht ungültig " +"macht, während :c:member:`!tp_clear` noch läuft." #: ../../c-api/typeobj.rst:1675 msgid "" "Python will not automatically call :c:member:`!tp_clear` multiple times " "concurrently." msgstr "" +"Python ruft :c:member:`!tp_clear` nicht automatisch mehrfach gleichzeitig " +"auf." #: ../../c-api/typeobj.rst:1678 msgid "" @@ -2787,6 +3561,10 @@ msgid "" "reference cycles in a :term:`cyclic isolate`, but future versions might " "clear objects regularly before their destruction." msgstr "" +"CPython leert derzeit nur die Objekte automatisch, die nötig sind, um " +"Referenzzyklen in einem :term:`zyklischen Isolat ` " +"aufzubrechen. Künftige Versionen könnten Objekte aber regelmäßig vor ihrer " +"Zerstörung leeren." #: ../../c-api/typeobj.rst:1682 msgid "" @@ -2801,6 +3579,17 @@ msgid "" "immediately obvious, and there's rarely a good reason to avoid " "implementing :c:member:`~PyTypeObject.tp_clear`." msgstr "" +"Zusammengenommen müssen alle Funktionen :c:member:`~PyTypeObject.tp_clear` " +"im System gemeinsam alle Referenzzyklen aufbrechen. Das ist feinsinnig, und " +"im Zweifel stellst du besser eine " +"Funktion :c:member:`~PyTypeObject.tp_clear` bereit. Der Typ tuple zum " +"Beispiel setzt keine Funktion :c:member:`~PyTypeObject.tp_clear` um, weil " +"sich beweisen lässt, dass kein Referenzzyklus ausschließlich aus Tupeln " +"bestehen kann. Deshalb sind die " +"Funktionen :c:member:`~PyTypeObject.tp_clear` anderer Typen dafür zuständig, " +"jeden Zyklus aufzubrechen, der ein Tupel enthält. Das ist nicht sofort " +"offensichtlich, und es gibt selten einen guten " +"Grund, :c:member:`~PyTypeObject.tp_clear` nicht umzusetzen." #: ../../c-api/typeobj.rst:1693 msgid "" @@ -2809,6 +3598,10 @@ msgid "" "and set its pointers to those members to ``NULL``, as in the following " "example::" msgstr "" +"Umsetzungen von :c:member:`~PyTypeObject.tp_clear` sollten die Referenzen " +"der Instanz auf diejenigen ihrer Member fallen lassen, die Python-Objekte " +"sein können, und ihre Zeiger auf diese Member auf ``NULL`` setzen, wie im " +"folgenden Beispiel::" #: ../../c-api/typeobj.rst:1697 msgid "" @@ -2823,6 +3616,16 @@ msgid "" " return 0;\n" "}" msgstr "" +"static int\n" +"local_clear(PyObject *op)\n" +"{\n" +" localobject *self = (localobject *) op;\n" +" Py_CLEAR(self->key);\n" +" Py_CLEAR(self->args);\n" +" Py_CLEAR(self->kw);\n" +" Py_CLEAR(self->dict);\n" +" return 0;\n" +"}" #: ../../c-api/typeobj.rst:1708 msgid "" @@ -2838,6 +3641,18 @@ msgid "" "contained object can no longer be used. The :c:func:`Py_CLEAR` macro " "performs the operations in a safe order." msgstr "" +"Das Makro :c:func:`Py_CLEAR` sollte verwendet werden, weil das Leeren von " +"Referenzen heikel ist: Die Referenz auf das enthaltene Objekt darf erst dann " +"freigegeben werden (über :c:func:`Py_DECREF`), nachdem der Zeiger auf das " +"enthaltene Objekt auf ``NULL`` gesetzt wurde. Denn das Freigeben der " +"Referenz kann dazu führen, dass das enthaltene Objekt zu Müll wird, was eine " +"Kette von Aufräumvorgängen anstößt, die auch das Ausführen beliebigen Python-" +"Codes umfassen kann (durch Finalisierer oder Weakref-Callbacks des " +"enthaltenen Objekts). Kann solcher Code *self* erneut referenzieren, ist es " +"wichtig, dass der Zeiger auf das enthaltene Objekt zu diesem Zeitpunkt " +"``NULL`` ist, damit *self* weiß, dass das enthaltene Objekt nicht mehr " +"verwendet werden kann. Das Makro :c:func:`Py_CLEAR` führt die Schritte in " +"einer sicheren Reihenfolge aus." #: ../../c-api/typeobj.rst:1720 msgid "" @@ -2845,16 +3660,21 @@ msgid "" "the :c:member:`~PyTypeObject.tp_flags` field, the clear function must " "call :c:func:`PyObject_ClearManagedDict` like this::" msgstr "" +"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` im " +"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, muss die clear-" +"Funktion :c:func:`PyObject_ClearManagedDict` so aufrufen::" #: ../../c-api/typeobj.rst:1724 msgid "PyObject_ClearManagedDict((PyObject*)self);" -msgstr "" +msgstr "PyObject_ClearManagedDict((PyObject*)self);" #: ../../c-api/typeobj.rst:1726 msgid "" "More information about Python's garbage collection scheme can be found in " "section :ref:`supporting-cycle-detection`." msgstr "" +"Mehr Informationen zum Verfahren der Speicherbereinigung in Python stehen im " +"Abschnitt :ref:`supporting-cycle-detection`." #: ../../c-api/typeobj.rst:1733 msgid "" @@ -2865,21 +3685,31 @@ msgid "" "and :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type " "if they are all zero in the subtype." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_traverse` und dem Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` vererbt: Das Flag-" +"Bit, :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` werden alle vom Basistyp geerbt, wenn " +"sie im Untertyp alle null sind." #: ../../c-api/typeobj.rst:1747 msgid "" "An optional pointer to the rich comparison function, whose signature is::" msgstr "" +"Ein wahlfreier Zeiger auf die Funktion für den erweiterten Vergleich, deren " +"Signatur lautet::" #: ../../c-api/typeobj.rst:1749 msgid "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" -msgstr "" +msgstr "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" #: ../../c-api/typeobj.rst:1751 msgid "" "The first parameter is guaranteed to be an instance of the type that is " "defined by :c:type:`PyTypeObject`." msgstr "" +"Der erste Parameter ist garantiert eine Instanz des Typs, der " +"durch :c:type:`PyTypeObject` festgelegt ist." #: ../../c-api/typeobj.rst:1754 msgid "" @@ -2888,6 +3718,10 @@ msgid "" "``Py_NotImplemented``, if another error occurred it must return ``NULL`` and " "set an exception condition." msgstr "" +"Die Funktion sollte das Ergebnis des Vergleichs zurückgeben (üblicherweise " +"``Py_True`` oder ``Py_False``). Ist der Vergleich undefiniert, muss sie " +"``Py_NotImplemented`` zurückgeben. Trat ein anderer Fehler auf, muss sie " +"``NULL`` zurückgeben und einen Ausnahmezustand setzen." #: ../../c-api/typeobj.rst:1759 msgid "" @@ -2895,14 +3729,17 @@ msgid "" "for :c:member:`~PyTypeObject.tp_richcompare` and " "for :c:func:`PyObject_RichCompare`:" msgstr "" +"Die folgenden Konstanten sind festgelegt, um als drittes Argument " +"für :c:member:`~PyTypeObject.tp_richcompare` und " +"für :c:func:`PyObject_RichCompare` verwendet zu werden:" #: ../../c-api/typeobj.rst:1765 msgid "Constant" -msgstr "" +msgstr "Konstante" #: ../../c-api/typeobj.rst:1765 msgid "Comparison" -msgstr "" +msgstr "Vergleich" #: ../../c-api/typeobj.rst:1767 msgid "``<``" @@ -2932,6 +3769,8 @@ msgstr "``>=``" msgid "" "The following macro is defined to ease writing rich comparison functions:" msgstr "" +"Das folgende Makro ist festgelegt, um das Schreiben von Funktionen für den " +"erweiterten Vergleich zu erleichtern:" #: ../../c-api/typeobj.rst:1784 msgid "" @@ -2940,14 +3779,23 @@ msgid "" "operators (for example, they may be C ints or floats). The third argument " "specifies the requested operation, as for :c:func:`PyObject_RichCompare`." msgstr "" +"Gibt je nach Ergebnis eines Vergleichs ``Py_True`` oder ``Py_False`` aus der " +"Funktion zurück. VAL_A und VAL_B müssen sich über die C-Vergleichsoperatoren " +"ordnen lassen (sie dürfen zum Beispiel C-ints oder -floats sein). Das dritte " +"Argument gibt den gewünschten Vorgang an, wie " +"bei :c:func:`PyObject_RichCompare`." #: ../../c-api/typeobj.rst:1790 msgid "The returned value is a new :term:`strong reference`." msgstr "" +"Der zurückgegebene Wert ist eine neue :term:`starke Referenz `." #: ../../c-api/typeobj.rst:1792 msgid "On error, sets an exception and returns ``NULL`` from the function." msgstr "" +"Im Fehlerfall setzt es eine Ausnahme und gibt ``NULL`` aus der Funktion " +"zurück." #: ../../c-api/typeobj.rst:1800 msgid "" @@ -2958,6 +3806,12 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_richcompare` " "and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_hash` vererbt: Ein Untertyp " +"erbt :c:member:`~PyTypeObject.tp_richcompare` " +"und :c:member:`~PyTypeObject.tp_hash`, " +"wenn :c:member:`~PyTypeObject.tp_richcompare` " +"und :c:member:`~PyTypeObject.tp_hash` des Untertyps beide ``NULL`` sind." #: ../../c-api/typeobj.rst:1807 msgid "" @@ -2967,12 +3821,19 @@ msgid "" "not even the inherited function is used and instances of the type will not " "be able to participate in any comparisons." msgstr "" +":c:data:`PyBaseObject_Type` stellt eine Umsetzung " +"von :c:member:`~PyTypeObject.tp_richcompare` bereit, die geerbt werden kann. " +"Ist allerdings nur :c:member:`~PyTypeObject.tp_hash` festgelegt, wird nicht " +"einmal die geerbte Funktion verwendet, und Instanzen des Typs können an " +"keinerlei Vergleichen teilnehmen." #: ../../c-api/typeobj.rst:1816 msgid "" "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` " "should be used instead, if at all possible." msgstr "" +"Dieses Feld wird zwar weiterhin unterstützt, aber nach Möglichkeit sollte " +"stattdessen :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` verwendet werden." #: ../../c-api/typeobj.rst:1819 msgid "" @@ -2983,18 +3844,28 @@ msgid "" "functions. The instance structure needs to include a field of " "type :c:expr:`PyObject*` which is initialized to ``NULL``." msgstr "" +"Sind die Instanzen dieses Typs schwach referenzierbar, ist dieses Feld " +"größer als null und enthält den Versatz des Kopfes der Liste schwacher " +"Referenzen in der Instanzstruktur (ohne den GC-Kopf, falls vorhanden). " +"Dieser Versatz wird von :c:func:`PyObject_ClearWeakRefs` und den " +"``PyWeakref_*``-Funktionen verwendet. Die Instanzstruktur muss ein Feld vom " +"Typ :c:expr:`PyObject*` enthalten, das auf ``NULL`` initialisiert wird." #: ../../c-api/typeobj.rst:1826 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that " "is the list head for weak references to the type object itself." msgstr "" +"Verwechsle dieses Feld nicht mit :c:member:`~PyTypeObject.tp_weaklist`. Das " +"ist der Listenkopf für schwache Referenzen auf das Typobjekt selbst." #: ../../c-api/typeobj.rst:1829 msgid "" "It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit " "and :c:member:`~PyTypeObject.tp_weaklistoffset`." msgstr "" +"Es ist ein Fehler, sowohl das Bit :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` als " +"auch :c:member:`~PyTypeObject.tp_weaklistoffset` zu setzen." #: ../../c-api/typeobj.rst:1834 msgid "" @@ -3004,6 +3875,12 @@ msgid "" "is always found via :c:member:`~PyTypeObject.tp_weaklistoffset`, this should " "not be a problem." msgstr "" +"Dieses Feld wird an Untertypen vererbt, siehe aber die unten aufgeführten " +"Regeln. Ein Untertyp darf diesen Versatz übergehen. Das bedeutet, dass der " +"Untertyp einen anderen Kopf der Liste schwacher Referenzen verwendet als der " +"Basistyp. Da der Listenkopf immer " +"über :c:member:`~PyTypeObject.tp_weaklistoffset` gefunden wird, sollte das " +"kein Problem sein." #: ../../c-api/typeobj.rst:1841 msgid "" @@ -3012,6 +3889,10 @@ msgid "" "then :c:member:`~PyTypeObject.tp_weaklistoffset` will be set to a negative " "value, to indicate that it is unsafe to use this field." msgstr "" +"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` im " +"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, " +"wird :c:member:`~PyTypeObject.tp_weaklistoffset` auf einen negativen Wert " +"gesetzt, um anzuzeigen, dass es nicht gefahrlos verwendet werden kann." #: ../../c-api/typeobj.rst:1851 msgid "" @@ -3020,24 +3901,31 @@ msgid "" "are :term:`iterable` (although sequences may be iterable without this " "function)." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die einen :term:`Iterator " +"` für das Objekt zurückgibt. Sein Vorhandensein zeigt " +"normalerweise an, dass die Instanzen dieses Typs :term:`iterierbar " +"` sind (Sequenzen können allerdings auch ohne diese Funktion " +"iterierbar sein)." #: ../../c-api/typeobj.rst:1855 msgid "This function has the same signature as :c:func:`PyObject_GetIter`::" -msgstr "" +msgstr "Diese Funktion hat dieselbe Signatur wie :c:func:`PyObject_GetIter`::" #: ../../c-api/typeobj.rst:1857 msgid "PyObject *tp_iter(PyObject *self);" -msgstr "" +msgstr "PyObject *tp_iter(PyObject *self);" #: ../../c-api/typeobj.rst:1868 msgid "" "An optional pointer to a function that returns the next item in " "an :term:`iterator`. The signature is::" msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die das nächste Element " +"eines :term:`Iterators ` zurückgibt. Die Signatur lautet::" #: ../../c-api/typeobj.rst:1871 msgid "PyObject *tp_iternext(PyObject *self);" -msgstr "" +msgstr "PyObject *tp_iternext(PyObject *self);" #: ../../c-api/typeobj.rst:1873 msgid "" @@ -3046,6 +3934,11 @@ msgid "" "When another error occurs, it must return ``NULL`` too. The presence of " "``tp_iternext`` signals that the instances of this type are iterators." msgstr "" +"Ist der Iterator :term:`erschöpft `, muss die Funktion " +"``tp_iternext`` ``NULL`` zurückgeben. Eine :exc:`StopIteration`-Ausnahme " +"kann gesetzt sein oder auch nicht. Tritt ein anderer Fehler auf, muss sie " +"ebenfalls ``NULL`` zurückgeben. Das Vorhandensein von ``tp_iternext`` zeigt " +"an, dass die Instanzen dieses Typs Iteratoren sind." #: ../../c-api/typeobj.rst:1879 msgid "" @@ -3053,28 +3946,39 @@ msgid "" "function, and that function should return the iterator instance itself (not " "a new iterator instance)." msgstr "" +"Iteratortypen sollten außerdem die " +"Funktion :c:member:`~PyTypeObject.tp_iter` festlegen, und diese Funktion " +"sollte die Iterator-Instanz selbst zurückgeben (keine neue Iterator-Instanz)." #: ../../c-api/typeobj.rst:1883 msgid "This function has the same signature as :c:func:`PyIter_Next`." -msgstr "" +msgstr "Diese Funktion hat dieselbe Signatur wie :c:func:`PyIter_Next`." #: ../../c-api/typeobj.rst:1894 msgid "" "An optional pointer to a static ``NULL``-terminated array " "of :c:type:`PyMethodDef` structures, declaring regular methods of this type." msgstr "" +"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " +"von :c:type:`PyMethodDef`-Strukturen, die die gewöhnlichen Methoden dieses " +"Typs deklarieren." #: ../../c-api/typeobj.rst:1897 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor." msgstr "" +"Für jeden Eintrag im Array wird dem Dictionary des Typs " +"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem " +"Methodendeskriptor hinzugefügt." #: ../../c-api/typeobj.rst:1902 msgid "" "This field is not inherited by subtypes (methods are inherited through a " "different mechanism)." msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (Methoden werden über einen " +"anderen Mechanismus vererbt)." #: ../../c-api/typeobj.rst:1910 msgid "" @@ -3082,18 +3986,26 @@ msgid "" "of :c:type:`PyMemberDef` structures, declaring regular data members (fields " "or slots) of instances of this type." msgstr "" +"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " +"von :c:type:`PyMemberDef`-Strukturen, die die gewöhnlichen Datenmember " +"(Felder oder Slots) von Instanzen dieses Typs deklarieren." #: ../../c-api/typeobj.rst:1914 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor." msgstr "" +"Für jeden Eintrag im Array wird dem Dictionary des Typs " +"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem Member-" +"Deskriptor hinzugefügt." #: ../../c-api/typeobj.rst:1919 msgid "" "This field is not inherited by subtypes (members are inherited through a " "different mechanism)." msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (Member werden über einen " +"anderen Mechanismus vererbt)." #: ../../c-api/typeobj.rst:1927 msgid "" @@ -3101,18 +4013,26 @@ msgid "" "of :c:type:`PyGetSetDef` structures, declaring computed attributes of " "instances of this type." msgstr "" +"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " +"von :c:type:`PyGetSetDef`-Strukturen, die berechnete Attribute von Instanzen " +"dieses Typs deklarieren." #: ../../c-api/typeobj.rst:1930 msgid "" "For each entry in the array, an entry is added to the type's dictionary " "(see :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor." msgstr "" +"Für jeden Eintrag im Array wird dem Dictionary des Typs " +"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem getset-" +"Deskriptor hinzugefügt." #: ../../c-api/typeobj.rst:1935 msgid "" "This field is not inherited by subtypes (computed attributes are inherited " "through a different mechanism)." msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (berechnete Attribute werden " +"über einen anderen Mechanismus vererbt)." #: ../../c-api/typeobj.rst:1941 msgid "" @@ -3121,10 +4041,14 @@ msgid "" "inheritance require dynamically creating a type object by calling the " "metatype." msgstr "" +"Ein wahlfreier Zeiger auf einen Basistyp, von dem Typeigenschaften geerbt " +"werden. Auf dieser Ebene wird nur Einfachvererbung unterstützt; " +"Mehrfachvererbung erfordert, ein Typobjekt dynamisch durch Aufruf des " +"Metatyps zu erzeugen." #: ../../c-api/typeobj.rst:1945 msgid "For the corresponding slot ID, see :c:macro:`Py_tp_base`." -msgstr "" +msgstr "Die zugehörige Slot-ID steht unter :c:macro:`Py_tp_base`." #: ../../c-api/typeobj.rst:1951 msgid "" @@ -3133,6 +4057,10 @@ msgid "" "like :c:func:`PyType_GenericNew`, with implicit conversion to a pointer, are " "valid C99 address constants." msgstr "" +"Für das Initialisieren von Slots gelten die Regeln zum Initialisieren von " +"Globalen. C99 verlangt, dass die Initialisierer „Adresskonstanten“ sind. " +"Funktionsbezeichner wie :c:func:`PyType_GenericNew` sind mit ihrer " +"stillschweigenden Umwandlung in einen Zeiger gültige C99-Adresskonstanten." #: ../../c-api/typeobj.rst:1956 msgid "" @@ -3141,26 +4069,34 @@ msgid "" "constant. Compilers may support this (gcc does), MSVC does not. Both " "compilers are strictly standard conforming in this particular behavior." msgstr "" +"Der unäre Operator „&“, angewendet auf eine nicht statische Variable " +"wie :c:data:`PyBaseObject_Type`, muss dagegen keine Adresskonstante ergeben. " +"Compiler dürfen das unterstützen (gcc tut es), MSVC tut es nicht. Beide " +"Compiler halten sich in diesem Punkt streng an den Standard." #: ../../c-api/typeobj.rst:1962 msgid "" "Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the " "extension module's init function." msgstr "" +"Folglich sollte :c:member:`~PyTypeObject.tp_base` in der init-Funktion des " +"Erweiterungsmoduls gesetzt werden." #: ../../c-api/typeobj.rst:1967 msgid "This field is not inherited by subtypes (obviously)." -msgstr "" +msgstr "Dieses Feld wird (selbstverständlich) nicht an Untertypen vererbt." #: ../../c-api/typeobj.rst:1971 msgid "" "This field defaults to ``&PyBaseObject_Type`` (which to Python programmers " "is known as the type :class:`object`)." msgstr "" +"Dieses Feld ist auf ``&PyBaseObject_Type`` voreingestellt (was Python-" +"Programmierer als den Typ :class:`object` kennen)." #: ../../c-api/typeobj.rst:1977 msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`." -msgstr "" +msgstr "Das Dictionary des Typs wird hier von :c:func:`PyType_Ready` abgelegt." #: ../../c-api/typeobj.rst:1979 msgid "" @@ -3172,6 +4108,14 @@ msgid "" "(like :meth:`~object.__add__`). Once initialization for the type has " "finished, this field should be treated as read-only." msgstr "" +"Dieses Feld sollte normalerweise auf ``NULL`` initialisiert werden, bevor " +"PyType_Ready aufgerufen wird. Es darf auch mit einem Dictionary mit " +"Anfangsattributen für den Typ initialisiert werden. " +"Sobald :c:func:`PyType_Ready` den Typ initialisiert hat, dürfen diesem " +"Dictionary nur dann weitere Attribute für den Typ hinzugefügt werden, wenn " +"sie nicht zu überladenen Operationen gehören (wie :meth:`~object.__add__`). " +"Ist die Initialisierung des Typs abgeschlossen, sollte dieses Feld als nur " +"lesbar behandelt werden." #: ../../c-api/typeobj.rst:1987 msgid "" @@ -3179,6 +4123,9 @@ msgid "" "Use :c:func:`PyType_GetDict` to retrieve the dictionary for an arbitrary " "type." msgstr "" +"Manche Typen legen ihr Dictionary nicht in diesem Slot ab. " +"Verwende :c:func:`PyType_GetDict`, um das Dictionary eines beliebigen Typs " +"zu holen." #: ../../c-api/typeobj.rst:1993 msgid "" @@ -3186,58 +4133,77 @@ msgid "" "Instead, the dict for such types is stored on ``PyInterpreterState``. " "Use :c:func:`PyType_GetDict` to get the dict for an arbitrary type." msgstr "" +"Zu den Interna: Bei statischen integrierten Typen ist das immer ``NULL``. " +"Das Dictionary solcher Typen liegt stattdessen am ``PyInterpreterState``. " +"Verwende :c:func:`PyType_GetDict`, um das Dictionary eines beliebigen Typs " +"zu bekommen." #: ../../c-api/typeobj.rst:1999 msgid "" "This field is not inherited by subtypes (though the attributes defined in " "here are inherited through a different mechanism)." msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (die hier festgelegten " +"Attribute werden allerdings über einen anderen Mechanismus vererbt)." #: ../../c-api/typeobj.rst:2004 msgid "" "If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new " "dictionary to it." msgstr "" +"Ist dieses Feld ``NULL``, weist :c:func:`PyType_Ready` ihm ein neues " +"Dictionary zu." #: ../../c-api/typeobj.rst:2009 msgid "" "It is not safe to use :c:func:`PyDict_SetItem` on or otherwise " "modify :c:member:`~PyTypeObject.tp_dict` with the dictionary C-API." msgstr "" +"Es ist nicht gefahrlos möglich, :c:func:`PyDict_SetItem` " +"auf :c:member:`~PyTypeObject.tp_dict` anzuwenden oder es anderweitig über " +"die Dictionary-C-API zu ändern." #: ../../c-api/typeobj.rst:2017 msgid "An optional pointer to a \"descriptor get\" function." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zum Lesen eines Deskriptors " +"(„descriptor get“)." #: ../../c-api/typeobj.rst:2019 ../../c-api/typeobj.rst:2037 #: ../../c-api/typeobj.rst:2103 ../../c-api/typeobj.rst:2135 #: ../../c-api/typeobj.rst:2160 msgid "The function signature is::" -msgstr "" +msgstr "Die Signatur der Funktion lautet::" #: ../../c-api/typeobj.rst:2021 msgid "PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" msgstr "" +"PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" #: ../../c-api/typeobj.rst:2034 msgid "" "An optional pointer to a function for setting and deleting a descriptor's " "value." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zum Setzen und Löschen des Werts " +"eines Deskriptors." #: ../../c-api/typeobj.rst:2039 msgid "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" -msgstr "" +msgstr "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" #: ../../c-api/typeobj.rst:2041 msgid "The *value* argument is set to ``NULL`` to delete the value." msgstr "" +"Das Argument *value* wird auf ``NULL`` gesetzt, um den Wert zu löschen." #: ../../c-api/typeobj.rst:2052 msgid "" "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_DICT` " "should be used instead, if at all possible." msgstr "" +"Dieses Feld wird zwar weiterhin unterstützt, aber nach Möglichkeit sollte " +"stattdessen :c:macro:`Py_TPFLAGS_MANAGED_DICT` verwendet werden." #: ../../c-api/typeobj.rst:2055 msgid "" @@ -3246,18 +4212,25 @@ msgid "" "of the type of the instance variable dictionary; this offset is used " "by :c:func:`PyObject_GenericGetAttr`." msgstr "" +"Haben die Instanzen dieses Typs ein Dictionary mit Instanzvariablen, ist " +"dieses Feld ungleich null und enthält den Versatz des Dictionarys der " +"Instanzvariablen in den Instanzen des Typs. Dieser Versatz wird " +"von :c:func:`PyObject_GenericGetAttr` verwendet." #: ../../c-api/typeobj.rst:2060 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is " "the dictionary for attributes of the type object itself." msgstr "" +"Verwechsle dieses Feld nicht mit :c:member:`~PyTypeObject.tp_dict`. Das ist " +"das Dictionary für die Attribute des Typobjekts selbst." #: ../../c-api/typeobj.rst:2063 msgid "" "The value specifies the offset of the dictionary from the start of the " "instance structure." msgstr "" +"Der Wert gibt den Versatz des Dictionarys vom Anfang der Instanzstruktur an." #: ../../c-api/typeobj.rst:2065 msgid "" @@ -3268,12 +4241,21 @@ msgid "" "the dictionary, so it is may be more efficient to " "call :c:func:`PyObject_GetAttr` when accessing an attribute on the object." msgstr "" +":c:member:`~PyTypeObject.tp_dictoffset` sollte als nur schreibbar betrachtet " +"werden. Um den Zeiger auf das Dictionary zu bekommen, " +"rufe :c:func:`PyObject_GenericGetDict` auf. Der Aufruf " +"von :c:func:`PyObject_GenericGetDict` muss möglicherweise Speicher für das " +"Dictionary anfordern, deshalb kann es wirksamer " +"sein, :c:func:`PyObject_GetAttr` aufzurufen, wenn du auf ein Attribut des " +"Objekts zugreifst." #: ../../c-api/typeobj.rst:2071 msgid "" "It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit " "and :c:member:`~PyTypeObject.tp_dictoffset`." msgstr "" +"Es ist ein Fehler, sowohl das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` als " +"auch :c:member:`~PyTypeObject.tp_dictoffset` zu setzen." #: ../../c-api/typeobj.rst:2076 msgid "" @@ -3282,6 +4264,10 @@ msgid "" "at the previous offset. To properly support inheritance, " "use :c:macro:`Py_TPFLAGS_MANAGED_DICT`." msgstr "" +"Dieses Feld wird an Untertypen vererbt. Ein Untertyp sollte diesen Versatz " +"nicht übergehen. Das könnte gefährlich sein, wenn C-Code versucht, auf das " +"Dictionary beim bisherigen Versatz zuzugreifen. Um Vererbung richtig zu " +"unterstützen, verwende :c:macro:`Py_TPFLAGS_MANAGED_DICT`." #: ../../c-api/typeobj.rst:2083 msgid "" @@ -3289,6 +4275,9 @@ msgid "" "field is ``NULL`` then no :attr:`~object.__dict__` gets created for " "instances." msgstr "" +"Dieser Slot hat keine Vorgabe. Bei :ref:`statischen Typen ` " +"wird für Instanzen kein :attr:`~object.__dict__` angelegt, wenn das Feld " +"``NULL`` ist." #: ../../c-api/typeobj.rst:2086 msgid "" @@ -3297,10 +4286,15 @@ msgid "" "then :c:member:`~PyTypeObject.tp_dictoffset` will be set to ``-1``, to " "indicate that it is unsafe to use this field." msgstr "" +"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` im " +"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, " +"wird :c:member:`~PyTypeObject.tp_dictoffset` auf ``-1`` gesetzt, um " +"anzuzeigen, dass es nicht gefahrlos verwendet werden kann." #: ../../c-api/typeobj.rst:2096 msgid "An optional pointer to an instance initialization function." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Initialisierung von Instanzen." #: ../../c-api/typeobj.rst:2098 msgid "" @@ -3309,10 +4303,14 @@ msgid "" "without calling :meth:`!__init__`, and it is possible to reinitialize an " "instance by calling its :meth:`!__init__` method again." msgstr "" +"Diese Funktion entspricht der Methode :meth:`~object.__init__` von Klassen. " +"Wie bei :meth:`!__init__` lässt sich eine Instanz erzeugen, ohne :meth:`!" +"__init__` aufzurufen, und eine Instanz lässt sich neu initialisieren, indem " +"ihre Methode :meth:`!__init__` erneut aufgerufen wird." #: ../../c-api/typeobj.rst:2105 msgid "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" -msgstr "" +msgstr "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" #: ../../c-api/typeobj.rst:2107 msgid "" @@ -3320,6 +4318,9 @@ msgid "" "arguments represent positional and keyword arguments of the call " "to :meth:`~object.__init__`." msgstr "" +"Das Argument self ist die zu initialisierende Instanz. Die Argumente *args* " +"und *kwds* stehen für die Positions- und Schlüsselwortargumente des Aufrufs " +"von :meth:`~object.__init__`." #: ../../c-api/typeobj.rst:2111 msgid "" @@ -3332,51 +4333,70 @@ msgid "" "if :c:member:`~PyTypeObject.tp_new` returns an instance of a subtype of the " "original type, the subtype's :c:member:`~PyTypeObject.tp_init` is called." msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_init` wird, sofern sie nicht " +"``NULL`` ist, aufgerufen, wenn eine Instanz auf gewöhnlichem Weg durch " +"Aufruf ihres Typs erzeugt wird, nachdem die " +"Funktion :c:member:`~PyTypeObject.tp_new` des Typs eine Instanz des Typs " +"zurückgegeben hat. Gibt die Funktion :c:member:`~PyTypeObject.tp_new` eine " +"Instanz eines anderen Typs zurück, der kein Untertyp des ursprünglichen Typs " +"ist, wird keine Funktion :c:member:`~PyTypeObject.tp_init` aufgerufen. " +"Gibt :c:member:`~PyTypeObject.tp_new` eine Instanz eines Untertyps des " +"ursprünglichen Typs zurück, wird :c:member:`~PyTypeObject.tp_init` des " +"Untertyps aufgerufen." #: ../../c-api/typeobj.rst:2118 msgid "Returns ``0`` on success, ``-1`` and sets an exception on error." msgstr "" +"Gibt bei Erfolg ``0`` zurück, im Fehlerfall ``-1``, und setzt eine Ausnahme." #: ../../c-api/typeobj.rst:2126 msgid "" "For :ref:`static types ` this field does not have a default." msgstr "" +"Bei :ref:`statischen Typen ` hat dieses Feld keine Vorgabe." #: ../../c-api/typeobj.rst:2133 msgid "An optional pointer to an instance allocation function." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Speicheranforderung für " +"Instanzen." #: ../../c-api/typeobj.rst:2137 msgid "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" -msgstr "" +msgstr "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" #: ../../c-api/typeobj.rst:2141 msgid "" "Static subtypes inherit this slot, which will " "be :c:func:`PyType_GenericAlloc` if inherited from :class:`object`." msgstr "" +"Statische Untertypen erben diesen Slot. Er " +"ist :c:func:`PyType_GenericAlloc`, wenn er von :class:`object` geerbt wird." #: ../../c-api/typeobj.rst:2144 ../../c-api/typeobj.rst:2215 msgid ":ref:`Heap subtypes ` do not inherit this slot." -msgstr "" +msgstr ":ref:`Heap-Untertypen ` erben diesen Slot nicht." #: ../../c-api/typeobj.rst:2148 msgid "" "For heap subtypes, this field is always set to :c:func:`PyType_GenericAlloc`." msgstr "" +"Bei Heap-Untertypen ist dieses Feld immer auf :c:func:`PyType_GenericAlloc` " +"gesetzt." #: ../../c-api/typeobj.rst:2151 ../../c-api/typeobj.rst:2223 msgid "For static subtypes, this slot is inherited (see above)." -msgstr "" +msgstr "Bei statischen Untertypen wird dieser Slot vererbt (siehe oben)." #: ../../c-api/typeobj.rst:2158 msgid "An optional pointer to an instance creation function." -msgstr "" +msgstr "Ein wahlfreier Zeiger auf eine Funktion zum Erzeugen von Instanzen." #: ../../c-api/typeobj.rst:2162 msgid "" "PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" msgstr "" +"PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" #: ../../c-api/typeobj.rst:2164 msgid "" @@ -3386,6 +4406,11 @@ msgid "" "whose :c:member:`~PyTypeObject.tp_new` function is called; it may be a " "subtype of that type (but not an unrelated type)." msgstr "" +"Das Argument *subtype* ist der Typ des zu erzeugenden Objekts. Die Argumente " +"*args* und *kwds* stehen für die Positions- und Schlüsselwortargumente des " +"Aufrufs des Typs. Beachte, dass *subtype* nicht gleich dem Typ sein muss, " +"dessen Funktion :c:member:`~PyTypeObject.tp_new` aufgerufen wird. Es darf " +"ein Untertyp dieses Typs sein (aber kein unverwandter Typ)." #: ../../c-api/typeobj.rst:2170 msgid "" @@ -3398,12 +4423,22 @@ msgid "" "in :c:member:`~PyTypeObject.tp_new`, while for mutable types, most " "initialization should be deferred to :c:member:`~PyTypeObject.tp_init`." msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_new` sollte ``subtype-" +">tp_alloc(subtype, nitems)`` aufrufen, um Platz für das Objekt anzufordern, " +"und danach nur so viel weitere Initialisierung vornehmen, wie unbedingt " +"nötig ist. Initialisierung, die sich gefahrlos überspringen oder wiederholen " +"lässt, gehört in den Handler :c:member:`~PyTypeObject.tp_init`. Als " +"Faustregel gilt: Bei unveränderlichen Typen sollte alle Initialisierung " +"in :c:member:`~PyTypeObject.tp_new` stattfinden, bei veränderlichen Typen " +"sollte das meiste auf :c:member:`~PyTypeObject.tp_init` verschoben werden." #: ../../c-api/typeobj.rst:2178 msgid "" "Set the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag to disallow " "creating instances of the type in Python." msgstr "" +"Setze das Flag :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION`, um das Erzeugen " +"von Instanzen des Typs in Python zu verbieten." #: ../../c-api/typeobj.rst:2183 msgid "" @@ -3412,6 +4447,9 @@ msgid "" "whose :c:member:`~PyTypeObject.tp_base` is ``NULL`` or " "``&PyBaseObject_Type``." msgstr "" +"Dieses Feld wird an Untertypen vererbt, außer an :ref:`statische Typen " +"`, deren :c:member:`~PyTypeObject.tp_base` ``NULL`` oder " +"``&PyBaseObject_Type`` ist." #: ../../c-api/typeobj.rst:2189 msgid "" @@ -3420,21 +4458,29 @@ msgid "" "instances; presumably there is some other way to create instances, like a " "factory function." msgstr "" +"Bei :ref:`statischen Typen ` hat dieses Feld keine Vorgabe. " +"Das bedeutet: Ist der Slot als ``NULL`` festgelegt, lässt sich der Typ nicht " +"aufrufen, um neue Instanzen zu erzeugen. Vermutlich gibt es dann einen " +"anderen Weg, Instanzen zu erzeugen, etwa eine Factory-Funktion." #: ../../c-api/typeobj.rst:2199 msgid "" "An optional pointer to an instance deallocation function. Its signature is::" msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Speicherfreigabe für Instanzen. " +"Ihre Signatur lautet::" #: ../../c-api/typeobj.rst:2201 msgid "void tp_free(void *self);" -msgstr "" +msgstr "void tp_free(void *self);" #: ../../c-api/typeobj.rst:2203 msgid "" "This function must free the memory allocated " "by :c:member:`~PyTypeObject.tp_alloc`." msgstr "" +"Diese Funktion muss den Speicher freigeben, " +"den :c:member:`~PyTypeObject.tp_alloc` angefordert hat." #: ../../c-api/typeobj.rst:2208 msgid "" @@ -3445,6 +4491,12 @@ msgid "" "inherit :c:func:`PyObject_Free`, then this slot is not inherited but instead " "defaults to :c:func:`PyObject_GC_Del`." msgstr "" +"Statische Untertypen erben diesen Slot. Er ist :c:func:`PyObject_Free`, wenn " +"er von :class:`object` geerbt wird. Ausnahme: Unterstützt der Typ die " +"Speicherbereinigung (ist also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` " +"in :c:member:`~PyTypeObject.tp_flags` gesetzt) und würde " +"er :c:func:`PyObject_Free` erben, wird dieser Slot nicht vererbt, sondern " +"ist auf :c:func:`PyObject_GC_Del` voreingestellt." #: ../../c-api/typeobj.rst:2219 msgid "" @@ -3452,10 +4504,14 @@ msgid "" "suitable to match :c:func:`PyType_GenericAlloc` and the value of " "the :c:macro:`Py_TPFLAGS_HAVE_GC` flag." msgstr "" +"Bei :ref:`Heap-Untertypen ` ist dieser Slot auf einen " +"Deallokator voreingestellt, der zu :c:func:`PyType_GenericAlloc` und zum " +"Wert des Flags :c:macro:`Py_TPFLAGS_HAVE_GC` passt." #: ../../c-api/typeobj.rst:2230 msgid "An optional pointer to a function called by the garbage collector." msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die die Speicherbereinigung aufruft." #: ../../c-api/typeobj.rst:2232 msgid "" @@ -3468,10 +4524,18 @@ msgid "" "function; it should return ``1`` for a collectible instance, and ``0`` for a " "non-collectible instance. The signature is::" msgstr "" +"Die Speicherbereinigung muss wissen, ob ein bestimmtes Objekt einsammelbar " +"ist oder nicht. Normalerweise genügt es, das " +"Feld :c:member:`~PyTypeObject.tp_flags` des Typs des Objekts anzusehen und " +"das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_GC` zu prüfen. Manche Typen haben " +"aber eine Mischung aus statisch und dynamisch angelegten Instanzen, und die " +"statisch angelegten Instanzen sind nicht einsammelbar. Solche Typen sollten " +"diese Funktion festlegen. Sie sollte ``1`` für eine einsammelbare und ``0`` " +"für eine nicht einsammelbare Instanz zurückgeben. Die Signatur lautet::" #: ../../c-api/typeobj.rst:2240 msgid "int tp_is_gc(PyObject *self);" -msgstr "" +msgstr "int tp_is_gc(PyObject *self);" #: ../../c-api/typeobj.rst:2242 msgid "" @@ -3479,26 +4543,33 @@ msgid "" "metatype, :c:data:`PyType_Type`, defines this function to distinguish " "between statically and :ref:`dynamically allocated types `.)" msgstr "" +"(Das einzige Beispiel dafür sind die Typen selbst. Der " +"Metatyp :c:data:`PyType_Type` legt diese Funktion fest, um zwischen statisch " +"und :ref:`dynamisch angelegten Typen ` zu unterscheiden.)" #: ../../c-api/typeobj.rst:2252 msgid "" "This slot has no default. If this field is " "``NULL``, :c:macro:`Py_TPFLAGS_HAVE_GC` is used as the functional equivalent." msgstr "" +"Dieser Slot hat keine Vorgabe. Ist dieses Feld ``NULL``, " +"wird :c:macro:`Py_TPFLAGS_HAVE_GC` als funktionale Entsprechung verwendet." #: ../../c-api/typeobj.rst:2258 msgid "Tuple of base types." -msgstr "" +msgstr "Tupel der Basistypen." #: ../../c-api/typeobj.rst:2260 ../../c-api/typeobj.rst:2281 msgid "" "This field should be set to ``NULL`` and treated as read-only. Python will " "fill it in when the type is :c:func:`initialized `." msgstr "" +"Dieses Feld sollte auf ``NULL`` gesetzt und als nur lesbar behandelt werden. " +"Python füllt es, wenn der Typ :c:func:`initialisiert ` wird." #: ../../c-api/typeobj.rst:2263 msgid "For the corresponding slot ID, see :c:macro:`Py_tp_bases`." -msgstr "" +msgstr "Die zugehörige Slot-ID steht unter :c:macro:`Py_tp_bases`." #: ../../c-api/typeobj.rst:2267 msgid "" @@ -3506,51 +4577,67 @@ msgid "" "set ``tp_bases`` to a tuple, Python will not raise an error, but some slots " "will only be inherited from the first base." msgstr "" +"Mehrfachvererbung funktioniert bei statisch festgelegten Typen nicht gut. " +"Setzt du ``tp_bases`` auf ein Tupel, löst Python zwar keinen Fehler aus, " +"manche Slots werden aber nur vom ersten Basistyp geerbt." #: ../../c-api/typeobj.rst:2273 ../../c-api/typeobj.rst:2296 #: ../../c-api/typeobj.rst:2313 ../../c-api/typeobj.rst:2330 #: ../../c-api/typeobj.rst:2346 msgid "This field is not inherited." -msgstr "" +msgstr "Dieses Feld wird nicht vererbt." #: ../../c-api/typeobj.rst:2278 msgid "" "Tuple containing the expanded set of base types, starting with the type " "itself and ending with :class:`object`, in Method Resolution Order." msgstr "" +"Tupel mit der aufgefalteten Menge der Basistypen, beginnend mit dem Typ " +"selbst und endend mit :class:`object`, in der Reihenfolge der " +"Methodenauflösung." #: ../../c-api/typeobj.rst:2286 msgid "" "This field is not inherited; it is calculated fresh " "by :c:func:`PyType_Ready`." msgstr "" +"Dieses Feld wird nicht vererbt. Es wird von :c:func:`PyType_Ready` neu " +"berechnet." #: ../../c-api/typeobj.rst:2292 msgid "Unused. Internal use only." -msgstr "" +msgstr "Unbenutzt. Nur für den internen Gebrauch." #: ../../c-api/typeobj.rst:2301 msgid "" "A collection of subclasses. Internal use only. May be an invalid pointer." msgstr "" +"Eine Sammlung von Unterklassen. Nur für den internen Gebrauch. Kann ein " +"ungültiger Zeiger sein." #: ../../c-api/typeobj.rst:2303 msgid "" "To get a list of subclasses, call the Python " "method :py:meth:`~type.__subclasses__`." msgstr "" +"Um eine Liste der Unterklassen zu bekommen, rufe die Python-" +"Methode :py:meth:`~type.__subclasses__` auf." #: ../../c-api/typeobj.rst:2308 msgid "" "For some types, this field does not hold a valid :c:expr:`PyObject*`. The " "type was changed to :c:expr:`void*` to indicate this." msgstr "" +"Bei manchen Typen enthält dieses Feld keinen gültigen :c:expr:`PyObject*`. " +"Der Typ wurde zu :c:expr:`void*` geändert, um das anzuzeigen." #: ../../c-api/typeobj.rst:2318 msgid "" "Weak reference list head, for weak references to this type object. Not " "inherited. Internal use only." msgstr "" +"Kopf der Liste schwacher Referenzen, für schwache Referenzen auf dieses " +"Typobjekt. Wird nicht vererbt. Nur für den internen Gebrauch." #: ../../c-api/typeobj.rst:2323 msgid "" @@ -3559,15 +4646,23 @@ msgid "" "``PyInterpreterState``. Use the public C-API or the internal " "``_PyObject_GET_WEAKREFS_LISTPTR()`` macro to avoid the distinction." msgstr "" +"Zu den Interna: Bei den statischen integrierten Typen ist das immer " +"``NULL``, auch wenn schwache Referenzen hinzugefügt werden. Die schwachen " +"Referenzen jedes einzelnen liegen stattdessen am ``PyInterpreterState``. " +"Verwende die öffentliche C-API oder das interne Makro " +"``_PyObject_GET_WEAKREFS_LISTPTR()``, um dir diese Unterscheidung zu " +"ersparen." #: ../../c-api/typeobj.rst:2337 msgid "" "This field is deprecated. Use :c:member:`~PyTypeObject.tp_finalize` instead." msgstr "" +"Dieses Feld ist veraltet. Verwende " +"stattdessen :c:member:`~PyTypeObject.tp_finalize`." #: ../../c-api/typeobj.rst:2342 msgid "Used to index into the method cache. Internal use only." -msgstr "" +msgstr "Dient als Index in den Methoden-Cache. Nur für den internen Gebrauch." #: ../../c-api/typeobj.rst:2353 msgid "" @@ -3575,10 +4670,13 @@ msgid "" "implementation of the :meth:`~object.__del__` special method. Its signature " "is::" msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Finalisierung von Instanzen. Das " +"ist die C-Umsetzung der speziellen Methode :meth:`~object.__del__`. Ihre " +"Signatur lautet::" #: ../../c-api/typeobj.rst:2357 msgid "void tp_finalize(PyObject *self);" -msgstr "" +msgstr "void tp_finalize(PyObject *self);" #: ../../c-api/typeobj.rst:2359 msgid "" @@ -3587,6 +4685,11 @@ msgid "" "any other objects it directly or indirectly references are still in a " "consistent state. The finalizer is allowed to execute arbitrary Python code." msgstr "" +"Der Hauptzweck der Finalisierung ist es, nicht triviale Aufräumarbeiten zu " +"erledigen, die vor der Zerstörung des Objekts stattfinden müssen, solange " +"das Objekt und alle Objekte, die es unmittelbar oder mittelbar referenziert, " +"noch in einem widerspruchsfreien Zustand sind. Der Finalisierer darf " +"beliebigen Python-Code ausführen." #: ../../c-api/typeobj.rst:2365 msgid "" @@ -3595,6 +4698,11 @@ msgid "" "However, none of the referents will have been automatically cleared " "(:c:member:`~PyTypeObject.tp_clear`) yet." msgstr "" +"Bevor Python ein Objekt automatisch finalisiert, können einige der " +"unmittelbar oder mittelbar referenzierten Objekte ihrerseits bereits " +"automatisch finalisiert worden sein. Keines der referenzierten Objekte wird " +"zu diesem Zeitpunkt aber bereits automatisch geleert worden sein " +"(:c:member:`~PyTypeObject.tp_clear`)." #: ../../c-api/typeobj.rst:2370 msgid "" @@ -3602,6 +4710,10 @@ msgid "" "finalizer must leave the object in a sane state (e.g., invariants are still " "met)." msgstr "" +"Andere, noch nicht finalisierte Objekte verwenden ein finalisiertes Objekt " +"möglicherweise noch, deshalb muss der Finalisierer das Objekt in einem " +"vernünftigen Zustand hinterlassen (die Invarianten müssen also weiterhin " +"gelten)." #: ../../c-api/typeobj.rst:2376 msgid "" @@ -3611,6 +4723,12 @@ msgid "" "be in a consistent state; a finalized object must be able to tolerate " "cleared referents." msgstr "" +"Nachdem Python ein Objekt automatisch finalisiert hat, beginnt es " +"möglicherweise damit, das Objekt und die von ihm referenzierten Objekte " +"(unmittelbar und mittelbar) automatisch zu leeren " +"(:c:member:`~PyTypeObject.tp_clear`). Dass geleerte Objekte in einem " +"widerspruchsfreien Zustand sind, ist nicht zugesichert. Ein finalisiertes " +"Objekt muss geleerte referenzierte Objekte verkraften." #: ../../c-api/typeobj.rst:2384 msgid "" @@ -3620,12 +4738,19 @@ msgid "" "beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " "finalized before destruction." msgstr "" +"Dass ein Objekt automatisch finalisiert wird, bevor sein Destruktor " +"(:c:member:`~PyTypeObject.tp_dealloc`) aufgerufen wird, ist nicht " +"zugesichert. Es wird empfohlen, am Anfang von :c:member:`!" +"tp_dealloc` :c:func:`PyObject_CallFinalizerFromDealloc` aufzurufen, damit " +"das Objekt vor der Zerstörung in jedem Fall finalisiert ist." #: ../../c-api/typeobj.rst:2392 msgid "" "The :c:member:`~PyTypeObject.tp_finalize` function can be called from any " "thread, although the :term:`GIL` will be held." msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_finalize` darf aus jedem Thread " +"aufgerufen werden, der :term:`GIL` wird dabei allerdings gehalten." #: ../../c-api/typeobj.rst:2397 msgid "" @@ -3633,11 +4758,16 @@ msgid "" "some global variables have been deleted. See the documentation of " "the :meth:`~object.__del__` method for details." msgstr "" +"Die Funktion :c:member:`!tp_finalize` kann beim Herunterfahren aufgerufen " +"werden, nachdem einige globale Variablen bereits gelöscht wurden. " +"Einzelheiten stehen in der Dokumentation zur Methode :meth:`~object.__del__`." #: ../../c-api/typeobj.rst:2401 msgid "" "When Python finalizes an object, it behaves like the following algorithm:" msgstr "" +"Wenn Python ein Objekt finalisiert, verhält es sich wie der folgende " +"Algorithmus:" #: ../../c-api/typeobj.rst:2403 msgid "" @@ -3647,12 +4777,20 @@ msgid "" "in :c:member:`~PyTypeObject.tp_flags`) and never marks other types of " "objects; this might change in a future version." msgstr "" +"Python markiert das Objekt möglicherweise als *finalisiert*. Derzeit " +"markiert Python immer Objekte, deren Typ die Speicherbereinigung unterstützt " +"(bei denen also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` " +"in :c:member:`~PyTypeObject.tp_flags` gesetzt ist), und nie andere Arten von " +"Objekten. Das kann sich in einer künftigen Version ändern." #: ../../c-api/typeobj.rst:2408 msgid "" "If the object is not marked as *finalized* and its :c:member:`!tp_finalize` " "finalizer function is non-``NULL``, the finalizer function is called." msgstr "" +"Ist das Objekt nicht als *finalisiert* markiert und ist seine " +"Finalisiererfunktion :c:member:`!tp_finalize` ungleich ``NULL``, wird die " +"Finalisiererfunktion aufgerufen." #: ../../c-api/typeobj.rst:2411 msgid "" @@ -3663,6 +4801,13 @@ msgid "" "resurrect the object by adding a new reference to the object that does not " "make it reachable, i.e., the object is (still) a member of a cyclic isolate." msgstr "" +"Wurde die Finalisiererfunktion aufgerufen und hat der Finalisierer das " +"Objekt wieder erreichbar gemacht (besteht also eine Referenz darauf und ist " +"es nicht Teil eines :term:`zyklischen Isolats `), sagt man, " +"der Finalisierer habe das Objekt *wieder auferstehen lassen*. Es ist nicht " +"festgelegt, ob der Finalisierer das Objekt auch dadurch auferstehen lassen " +"kann, dass er eine neue Referenz darauf hinzufügt, die es nicht erreichbar " +"macht, das Objekt also (weiterhin) Teil eines zyklischen Isolats ist." #: ../../c-api/typeobj.rst:2418 msgid "" @@ -3671,6 +4816,11 @@ msgid "" "Currently, Python never removes the *finalized* mark; this might change in a " "future version." msgstr "" +"Hat der Finalisierer das Objekt wieder auferstehen lassen, wird die " +"anstehende Zerstörung des Objekts abgebrochen, und die Markierung " +"*finalisiert* wird möglicherweise entfernt, sofern vorhanden. Derzeit " +"entfernt Python die Markierung *finalisiert* nie. Das kann sich in einer " +"künftigen Version ändern." #: ../../c-api/typeobj.rst:2423 msgid "" @@ -3679,6 +4829,11 @@ msgid "" "or :c:func:`PyObject_CallFinalizerFromDealloc`. No guarantees are made " "about when, if, or how often an object is automatically finalized, except:" msgstr "" +"*Automatische Finalisierung* bezeichnet jede Finalisierung, die Python " +"vornimmt, außer über Aufrufe von :c:func:`PyObject_CallFinalizer` " +"oder :c:func:`PyObject_CallFinalizerFromDealloc`. Darüber, wann, ob und wie " +"oft ein Objekt automatisch finalisiert wird, werden keine Zusagen gemacht, " +"außer:" #: ../../c-api/typeobj.rst:2428 msgid "" @@ -3686,6 +4841,9 @@ msgid "" "there is a reference to it and it is not a member of a :term:`cyclic " "isolate`." msgstr "" +"Python finalisiert ein Objekt nicht automatisch, wenn es erreichbar ist, " +"also wenn eine Referenz darauf besteht und es nicht Teil " +"eines :term:`zyklischen Isolats ` ist." #: ../../c-api/typeobj.rst:2431 msgid "" @@ -3696,18 +4854,29 @@ msgid "" "be manually finalized by calling :c:func:`PyObject_CallFinalizer` " "or :c:func:`PyObject_CallFinalizerFromDealloc`." msgstr "" +"Python finalisiert ein Objekt nicht automatisch, wenn das Finalisieren das " +"Objekt nicht als *finalisiert* markieren würde. Derzeit trifft das auf " +"Objekte zu, deren Typ die Speicherbereinigung nicht unterstützt, bei denen " +"also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` nicht gesetzt ist. Solche " +"Objekte lassen sich weiterhin von Hand finalisieren, " +"indem :c:func:`PyObject_CallFinalizer` " +"oder :c:func:`PyObject_CallFinalizerFromDealloc` aufgerufen wird." #: ../../c-api/typeobj.rst:2437 msgid "" "Python will not automatically finalize any two members of a :term:`cyclic " "isolate` concurrently." msgstr "" +"Python finalisiert nie zwei Mitglieder eines :term:`zyklischen Isolats " +"` gleichzeitig automatisch." #: ../../c-api/typeobj.rst:2439 msgid "" "Python will not automatically finalize an object after it has automatically " "cleared (:c:member:`~PyTypeObject.tp_clear`) the object." msgstr "" +"Python finalisiert ein Objekt nicht automatisch, nachdem es das Objekt " +"automatisch geleert hat (:c:member:`~PyTypeObject.tp_clear`)." #: ../../c-api/typeobj.rst:2441 msgid "" @@ -3715,6 +4884,9 @@ msgid "" "automatically finalize it after automatically clearing " "(see :c:member:`~PyTypeObject.tp_clear`) any other member." msgstr "" +"Ist ein Objekt Teil eines :term:`zyklischen Isolats `, " +"finalisiert Python es nicht automatisch, nachdem es irgendein anderes " +"Mitglied automatisch geleert hat (siehe :c:member:`~PyTypeObject.tp_clear`)." #: ../../c-api/typeobj.rst:2444 msgid "" @@ -3722,6 +4894,9 @@ msgid "" "before it automatically clears (see :c:member:`~PyTypeObject.tp_clear`) any " "of them." msgstr "" +"Python finalisiert jedes Mitglied eines :term:`zyklischen Isolats ` automatisch, bevor es irgendeines davon automatisch leert " +"(siehe :c:member:`~PyTypeObject.tp_clear`)." #: ../../c-api/typeobj.rst:2447 msgid "" @@ -3729,6 +4904,9 @@ msgid "" "(:c:member:`~PyTypeObject.tp_clear`), it will automatically finalize the " "object first." msgstr "" +"Will Python ein Objekt automatisch leeren " +"(:c:member:`~PyTypeObject.tp_clear`), finalisiert es das Objekt vorher " +"automatisch." #: ../../c-api/typeobj.rst:2451 msgid "" @@ -3736,6 +4914,9 @@ msgid "" "a :term:`cyclic isolate`, but future versions might finalize objects " "regularly before their destruction." msgstr "" +"CPython finalisiert derzeit nur Objekte automatisch, die Teil " +"eines :term:`zyklischen Isolats ` sind. Künftige Versionen " +"könnten Objekte aber regelmäßig vor ihrer Zerstörung finalisieren." #: ../../c-api/typeobj.rst:2455 msgid "" @@ -3743,6 +4924,9 @@ msgid "" "call :c:func:`PyObject_CallFinalizer` " "or :c:func:`PyObject_CallFinalizerFromDealloc` instead." msgstr "" +"Um ein Objekt von Hand zu finalisieren, rufe diese Funktion nicht " +"unmittelbar auf. Rufe stattdessen :c:func:`PyObject_CallFinalizer` " +"oder :c:func:`PyObject_CallFinalizerFromDealloc` auf." #: ../../c-api/typeobj.rst:2459 msgid "" @@ -3755,6 +4939,14 @@ msgid "" "with :c:func:`PyErr_WriteUnraisable` or :c:func:`PyErr_FormatUnraisable`. " "For example::" msgstr "" +":c:member:`~PyTypeObject.tp_finalize` sollte den aktuellen Ausnahmezustand " +"unverändert lassen. Der empfohlene Weg, einen nicht trivialen Finalisierer " +"zu schreiben, ist, die Ausnahme am Anfang " +"mit :c:func:`PyErr_GetRaisedException` zu sichern und am Ende " +"mit :c:func:`PyErr_SetRaisedException` wiederherzustellen. Stößt du mitten " +"im Finalisierer auf eine Ausnahme, protokolliere und lösche sie " +"mit :c:func:`PyErr_WriteUnraisable` oder :c:func:`PyErr_FormatUnraisable`. " +"Zum Beispiel::" #: ../../c-api/typeobj.rst:2468 msgid "" @@ -3778,6 +4970,25 @@ msgid "" " PyErr_SetRaisedException(exc);\n" "}" msgstr "" +"static void\n" +"foo_finalize(PyObject *self)\n" +"{\n" +" // Save the current exception, if any.\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" // ...\n" +"\n" +" if (do_something_that_might_raise() != success_indicator) {\n" +" PyErr_WriteUnraisable(self);\n" +" goto done;\n" +" }\n" +"\n" +"done:\n" +" // Restore the saved exception. This silently discards any exception\n" +" // raised above, so be sure to call PyErr_WriteUnraisable first if\n" +" // necessary.\n" +" PyErr_SetRaisedException(exc);\n" +"}" #: ../../c-api/typeobj.rst:2496 msgid "" @@ -3785,18 +4996,20 @@ msgid "" "the :c:macro:`Py_TPFLAGS_HAVE_FINALIZE` flags bit in order for this field to " "be used. This is no longer required." msgstr "" +"Vor Version 3.8 musste das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_FINALIZE` " +"gesetzt sein, damit dieses Feld verwendet wurde. Das ist nicht mehr nötig." #: ../../c-api/typeobj.rst:2502 msgid ":pep:`442`: \"Safe object finalization\"" -msgstr "" +msgstr ":pep:`442`: „Safe object finalization“" #: ../../c-api/typeobj.rst:2505 msgid ":c:func:`PyObject_CallFinalizer`" -msgstr "" +msgstr ":c:func:`PyObject_CallFinalizer`" #: ../../c-api/typeobj.rst:2506 msgid ":c:func:`PyObject_CallFinalizerFromDealloc`" -msgstr "" +msgstr ":c:func:`PyObject_CallFinalizerFromDealloc`" #: ../../c-api/typeobj.rst:2513 msgid "" @@ -3805,12 +5018,18 @@ msgid "" "used to optimize ``type.__call__``, which typically returns a new instance " "of *type*." msgstr "" +"Eine :ref:`vectorcall-Funktion `, die für Aufrufe dieses " +"Typobjekts (nicht seiner Instanzen) verwendet wird. Mit anderen Worten lässt " +"sich über ``tp_vectorcall`` ``type.__call__`` optimieren, das üblicherweise " +"eine neue Instanz von *type* zurückgibt." #: ../../c-api/typeobj.rst:2518 msgid "" "As with any vectorcall function, if ``tp_vectorcall`` is ``NULL``, the " "*tp_call* protocol (``Py_TYPE(type)->tp_call``) is used instead." msgstr "" +"Wie bei jeder vectorcall-Funktion wird, wenn ``tp_vectorcall`` ``NULL`` ist, " +"stattdessen das *tp_call*-Protokoll (``Py_TYPE(type)->tp_call``) verwendet." #: ../../c-api/typeobj.rst:2523 msgid "" @@ -3819,26 +5038,35 @@ msgid "" "that ``type->tp_vectorcall`` must match the behavior of ``Py_TYPE(type)-" ">tp_call``." msgstr "" +"Das :ref:`vectorcall-Protokoll ` verlangt, dass die vectorcall-" +"Funktion sich genauso verhält wie das zugehörige ``tp_call``. Das bedeutet, " +"dass ``type->tp_vectorcall`` zum Verhalten von ``Py_TYPE(type)->tp_call`` " +"passen muss." #: ../../c-api/typeobj.rst:2528 msgid "" "Specifically, if *type* uses the default metaclass, ``type->tp_vectorcall`` " "must behave the same as :c:expr:`PyType_Type->tp_call`, which:" msgstr "" +"Verwendet *type* die voreingestellte Metaklasse, muss sich ``type-" +">tp_vectorcall`` insbesondere genauso verhalten wie :c:expr:`PyType_Type-" +">tp_call`, das:" #: ../../c-api/typeobj.rst:2532 msgid "calls ``type->tp_new``," -msgstr "" +msgstr "``type->tp_new`` aufruft," #: ../../c-api/typeobj.rst:2534 msgid "" "if the result is a subclass of *type*, calls ``type->tp_init`` on the result " "of ``tp_new``, and" msgstr "" +"``type->tp_init`` auf dem Ergebnis von ``tp_new`` aufruft, wenn das Ergebnis " +"eine Unterklasse von *type* ist, und" #: ../../c-api/typeobj.rst:2537 msgid "returns the result of ``tp_new``." -msgstr "" +msgstr "das Ergebnis von ``tp_new`` zurückgibt." #: ../../c-api/typeobj.rst:2539 msgid "" @@ -3848,22 +5076,28 @@ msgid "" "types, note that both can be overridden (using :py:func:`~object.__new__` " "and :py:func:`~object.__init__`, respectively)." msgstr "" +"Üblicherweise wird ``tp_vectorcall`` übergangen, um diesen Ablauf für " +"bestimmte :c:member:`~PyTypeObject.tp_new` " +"und :c:member:`~PyTypeObject.tp_init` zu optimieren. Tust du das bei Typen, " +"von denen Nutzer Unterklassen bilden können, beachte, dass beide übergangen " +"werden können (über :py:func:`~object.__new__` " +"beziehungsweise :py:func:`~object.__init__`)." #: ../../c-api/typeobj.rst:2550 msgid "This field is never inherited." -msgstr "" +msgstr "Dieses Feld wird nie vererbt." #: ../../c-api/typeobj.rst:2552 msgid "(the field exists since 3.8 but it's only used since 3.9)" -msgstr "" +msgstr "(das Feld gibt es seit 3.8, verwendet wird es aber erst seit 3.9)" #: ../../c-api/typeobj.rst:2557 msgid "Internal. Do not use." -msgstr "" +msgstr "Intern. Nicht verwenden." #: ../../c-api/typeobj.rst:2565 msgid "Static Types" -msgstr "" +msgstr "Statische Typen" #: ../../c-api/typeobj.rst:2567 msgid "" @@ -3871,23 +5105,33 @@ msgid "" "static :c:type:`PyTypeObject` structure is defined directly in code and " "initialized using :c:func:`PyType_Ready`." msgstr "" +"Herkömmlich sind Typen, die in C-Code festgelegt werden, *statisch*, das " +"heißt: Eine statische :c:type:`PyTypeObject`-Struktur wird unmittelbar im " +"Code festgelegt und über :c:func:`PyType_Ready` initialisiert." #: ../../c-api/typeobj.rst:2571 msgid "" "This results in types that are limited relative to types defined in Python:" msgstr "" +"Daraus ergeben sich Typen, die gegenüber in Python festgelegten Typen " +"eingeschränkt sind:" #: ../../c-api/typeobj.rst:2573 msgid "" "Static types are limited to one base, i.e. they cannot use multiple " "inheritance." msgstr "" +"Statische Typen sind auf einen Basistyp beschränkt, können also keine " +"Mehrfachvererbung nutzen." #: ../../c-api/typeobj.rst:2575 msgid "" "Static type objects (but not necessarily their instances) are immutable. It " "is not possible to add or modify the type object's attributes from Python." msgstr "" +"Statische Typobjekte (nicht unbedingt aber ihre Instanzen) sind " +"unveränderlich. Die Attribute des Typobjekts lassen sich aus Python heraus " +"weder hinzufügen noch ändern." #: ../../c-api/typeobj.rst:2577 msgid "" @@ -3895,6 +5139,9 @@ msgid "" "interpreter-support>`, so they should not include any subinterpreter-" "specific state." msgstr "" +"Statische Typobjekte werden von allen :ref:`Unterinterpretern ` gemeinsam genutzt, sie sollten deshalb keinen Zustand " +"enthalten, der einem einzelnen Unterinterpreter eigen ist." #: ../../c-api/typeobj.rst:2581 msgid "" @@ -3902,10 +5149,14 @@ msgid "" "` as an opaque struct, any extension modules using static " "types must be compiled for a specific Python minor version." msgstr "" +"Da :c:type:`PyTypeObject` außerdem nur als undurchsichtige Struktur Teil " +"der :ref:`Limited API ` ist, müssen Erweiterungsmodule, die " +"statische Typen verwenden, für eine bestimmte Python-Nebenversion kompiliert " +"werden." #: ../../c-api/typeobj.rst:2589 msgid "Heap Types" -msgstr "" +msgstr "Heap-Typen" #: ../../c-api/typeobj.rst:2591 msgid "" @@ -3914,6 +5165,10 @@ msgid "" "created by Python's ``class`` statement. Heap types have " "the :c:macro:`Py_TPFLAGS_HEAPTYPE` flag set." msgstr "" +"Eine Alternative zu :ref:`statischen Typen ` sind *auf dem " +"Heap angelegte Typen*, kurz *Heap-Typen*, die den Klassen, die Pythons " +"``class``-Anweisung erzeugt, sehr nahekommen. Bei Heap-Typen ist das " +"Flag :c:macro:`Py_TPFLAGS_HEAPTYPE` gesetzt." #: ../../c-api/typeobj.rst:2596 msgid "" @@ -3921,10 +5176,13 @@ msgid "" "calling :c:func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:`PyType_FromModuleAndSpec`, " "or :c:func:`PyType_FromMetaclass`." msgstr "" +"Das geschieht, indem eine :c:type:`PyType_Spec`-Struktur gefüllt " +"und :c:func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:`PyType_FromModuleAndSpec` " +"oder :c:func:`PyType_FromMetaclass` aufgerufen wird." #: ../../c-api/typeobj.rst:2604 msgid "Number Object Structures" -msgstr "" +msgstr "Strukturen für Zahlenobjekte" #: ../../c-api/typeobj.rst:2608 msgid "" @@ -3932,10 +5190,13 @@ msgid "" "implement the number protocol. Each function is used by the function of " "similar name documented in the :ref:`number` section." msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " +"Zahlenprotokoll umsetzt. Jede Funktion wird von der gleichnamigen Funktion " +"verwendet, die im Abschnitt :ref:`number` dokumentiert ist." #: ../../c-api/typeobj.rst:2614 ../../c-api/typeobj.rst:3086 msgid "Here is the structure definition::" -msgstr "" +msgstr "Hier die Strukturdefinition::" #: ../../c-api/typeobj.rst:2616 msgid "" @@ -3982,6 +5243,48 @@ msgid "" " binaryfunc nb_inplace_matrix_multiply;\n" "} PyNumberMethods;" msgstr "" +"typedef struct {\n" +" binaryfunc nb_add;\n" +" binaryfunc nb_subtract;\n" +" binaryfunc nb_multiply;\n" +" binaryfunc nb_remainder;\n" +" binaryfunc nb_divmod;\n" +" ternaryfunc nb_power;\n" +" unaryfunc nb_negative;\n" +" unaryfunc nb_positive;\n" +" unaryfunc nb_absolute;\n" +" inquiry nb_bool;\n" +" unaryfunc nb_invert;\n" +" binaryfunc nb_lshift;\n" +" binaryfunc nb_rshift;\n" +" binaryfunc nb_and;\n" +" binaryfunc nb_xor;\n" +" binaryfunc nb_or;\n" +" unaryfunc nb_int;\n" +" void *nb_reserved;\n" +" unaryfunc nb_float;\n" +"\n" +" binaryfunc nb_inplace_add;\n" +" binaryfunc nb_inplace_subtract;\n" +" binaryfunc nb_inplace_multiply;\n" +" binaryfunc nb_inplace_remainder;\n" +" ternaryfunc nb_inplace_power;\n" +" binaryfunc nb_inplace_lshift;\n" +" binaryfunc nb_inplace_rshift;\n" +" binaryfunc nb_inplace_and;\n" +" binaryfunc nb_inplace_xor;\n" +" binaryfunc nb_inplace_or;\n" +"\n" +" binaryfunc nb_floor_divide;\n" +" binaryfunc nb_true_divide;\n" +" binaryfunc nb_inplace_floor_divide;\n" +" binaryfunc nb_inplace_true_divide;\n" +"\n" +" unaryfunc nb_index;\n" +"\n" +" binaryfunc nb_matrix_multiply;\n" +" binaryfunc nb_inplace_matrix_multiply;\n" +"} PyNumberMethods;" #: ../../c-api/typeobj.rst:2661 msgid "" @@ -3992,6 +5295,12 @@ msgid "" "``Py_NotImplemented``, if another error occurred they must return ``NULL`` " "and set an exception." msgstr "" +"Binäre und ternäre Funktionen müssen den Typ all ihrer Operanden prüfen und " +"die nötigen Umwandlungen vornehmen (mindestens einer der Operanden ist eine " +"Instanz des festgelegten Typs). Ist der Vorgang für die gegebenen Operanden " +"nicht festgelegt, müssen binäre und ternäre Funktionen ``Py_NotImplemented`` " +"zurückgeben. Trat ein anderer Fehler auf, müssen sie ``NULL`` zurückgeben " +"und eine Ausnahme setzen." #: ../../c-api/typeobj.rst:2670 msgid "" @@ -3999,16 +5308,21 @@ msgid "" "``NULL``. It was previously called :c:member:`!nb_long`, and was renamed in " "Python 3.0.1." msgstr "" +"Das Feld :c:member:`~PyNumberMethods.nb_reserved` sollte immer ``NULL`` " +"sein. Es hieß früher :c:member:`!nb_long` und wurde in Python 3.0.1 " +"umbenannt." #: ../../c-api/typeobj.rst:2821 msgid "Mapping Object Structures" -msgstr "" +msgstr "Strukturen für Mapping-Objekte" #: ../../c-api/typeobj.rst:2825 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the mapping protocol. It has three members:" msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " +"Mapping-Protokoll umsetzt. Sie hat drei Member:" #: ../../c-api/typeobj.rst:2832 msgid "" @@ -4016,6 +5330,9 @@ msgid "" "and :c:func:`PyObject_Size`, and has the same signature. This slot may be " "set to ``NULL`` if the object has no defined length." msgstr "" +"Diese Funktion wird von :c:func:`PyMapping_Size` und :c:func:`PyObject_Size` " +"verwendet und hat dieselbe Signatur. Dieser Slot darf auf ``NULL`` gesetzt " +"werden, wenn das Objekt keine festgelegte Länge hat." #: ../../c-api/typeobj.rst:2840 msgid "" @@ -4025,6 +5342,11 @@ msgid "" "the :c:func:`PyMapping_Check` function to return ``1``, it can be ``NULL`` " "otherwise." msgstr "" +"Diese Funktion wird von :c:func:`PyObject_GetItem` " +"und :c:func:`PySequence_GetSlice` verwendet und hat dieselbe Signatur " +"wie :c:func:`!PyObject_GetItem`. Dieser Slot muss gefüllt sein, damit die " +"Funktion :c:func:`PyMapping_Check` ``1`` zurückgibt. Andernfalls darf er " +"``NULL`` sein." #: ../../c-api/typeobj.rst:2850 msgid "" @@ -4035,16 +5357,24 @@ msgid "" "If this slot is ``NULL``, the object does not support item assignment and " "deletion." msgstr "" +"Diese Funktion wird " +"von :c:func:`PyObject_SetItem`, :c:func:`PyObject_DelItem`, :c:func:`PySequence_SetSlice` " +"und :c:func:`PySequence_DelSlice` verwendet. Sie hat dieselbe Signatur " +"wie :c:func:`!PyObject_SetItem`, *v* darf aber auch auf ``NULL`` gesetzt " +"werden, um ein Element zu löschen. Ist dieser Slot ``NULL``, unterstützt das " +"Objekt das Zuweisen und Löschen von Elementen nicht." #: ../../c-api/typeobj.rst:2861 msgid "Sequence Object Structures" -msgstr "" +msgstr "Strukturen für Sequenzobjekte" #: ../../c-api/typeobj.rst:2865 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the sequence protocol." msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " +"Sequenzprotokoll umsetzt." #: ../../c-api/typeobj.rst:2872 msgid "" @@ -4053,6 +5383,11 @@ msgid "" "for handling negative indices via the :c:member:`~PySequenceMethods.sq_item` " "and the :c:member:`~PySequenceMethods.sq_ass_item` slots." msgstr "" +"Diese Funktion wird von :c:func:`PySequence_Size` " +"und :c:func:`PyObject_Size` verwendet und hat dieselbe Signatur. Sie dient " +"außerdem dem Umgang mit negativen Indizes über die " +"Slots :c:member:`~PySequenceMethods.sq_item` " +"und :c:member:`~PySequenceMethods.sq_ass_item`." #: ../../c-api/typeobj.rst:2881 msgid "" @@ -4060,6 +5395,10 @@ msgid "" "signature. It is also used by the ``+`` operator, after trying the numeric " "addition via the :c:member:`~PyNumberMethods.nb_add` slot." msgstr "" +"Diese Funktion wird von :c:func:`PySequence_Concat` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem vom Operator ``+`` verwendet, nachdem " +"die numerische Addition über den Slot :c:member:`~PyNumberMethods.nb_add` " +"versucht wurde." #: ../../c-api/typeobj.rst:2889 msgid "" @@ -4067,6 +5406,10 @@ msgid "" "signature. It is also used by the ``*`` operator, after trying numeric " "multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot." msgstr "" +"Diese Funktion wird von :c:func:`PySequence_Repeat` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem vom Operator ``*`` verwendet, nachdem " +"die numerische Multiplikation über den " +"Slot :c:member:`~PyNumberMethods.nb_multiply` versucht wurde." #: ../../c-api/typeobj.rst:2897 msgid "" @@ -4076,6 +5419,12 @@ msgid "" "slot must be filled for the :c:func:`PySequence_Check` function to return " "``1``, it can be ``NULL`` otherwise." msgstr "" +"Diese Funktion wird von :c:func:`PySequence_GetItem` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem von :c:func:`PyObject_GetItem` " +"verwendet, nachdem der Indexzugriff über den " +"Slot :c:member:`~PyMappingMethods.mp_subscript` versucht wurde. Dieser Slot " +"muss gefüllt sein, damit die Funktion :c:func:`PySequence_Check` ``1`` " +"zurückgibt. Andernfalls darf er ``NULL`` sein." #: ../../c-api/typeobj.rst:2903 msgid "" @@ -4085,6 +5434,11 @@ msgid "" "to :c:member:`~PySequenceMethods.sq_item`. If :c:member:`!sq_length` is " "``NULL``, the index is passed as is to the function." msgstr "" +"Mit negativen Indizes wird so umgegangen: Ist der " +"Slot :c:member:`~PySequenceMethods.sq_length` gefüllt, wird er aufgerufen, " +"und über die Länge der Sequenz wird ein positiver Index berechnet, der " +"an :c:member:`~PySequenceMethods.sq_item` übergeben wird. Ist :c:member:`!" +"sq_length` ``NULL``, wird der Index unverändert an die Funktion übergeben." #: ../../c-api/typeobj.rst:2912 msgid "" @@ -4095,6 +5449,12 @@ msgid "" "slot may be left to ``NULL`` if the object does not support item assignment " "and deletion." msgstr "" +"Diese Funktion wird von :c:func:`PySequence_SetItem` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem von :c:func:`PyObject_SetItem` " +"und :c:func:`PyObject_DelItem` verwendet, nachdem das Zuweisen und Löschen " +"von Elementen über den Slot :c:member:`~PyMappingMethods.mp_ass_subscript` " +"versucht wurde. Dieser Slot darf ``NULL`` bleiben, wenn das Objekt das " +"Zuweisen und Löschen von Elementen nicht unterstützt." #: ../../c-api/typeobj.rst:2923 msgid "" @@ -4102,6 +5462,10 @@ msgid "" "signature. This slot may be left to ``NULL``, in this case :c:func:`!" "PySequence_Contains` simply traverses the sequence until it finds a match." msgstr "" +"Diese Funktion kann von :c:func:`PySequence_Contains` verwendet werden und " +"hat dieselbe Signatur. Dieser Slot darf ``NULL`` bleiben. In diesem Fall " +"durchläuft :c:func:`!PySequence_Contains` die Sequenz einfach, bis es eine " +"Übereinstimmung findet." #: ../../c-api/typeobj.rst:2932 msgid "" @@ -4112,6 +5476,13 @@ msgid "" "augmented assignment ``+=``, after trying numeric in-place addition via " "the :c:member:`~PyNumberMethods.nb_inplace_add` slot." msgstr "" +"Diese Funktion wird von :c:func:`PySequence_InPlaceConcat` verwendet und hat " +"dieselbe Signatur. Sie sollte ihren ersten Operanden ändern und zurückgeben. " +"Dieser Slot darf ``NULL`` bleiben. In diesem Fall fällt :c:func:`!" +"PySequence_InPlaceConcat` auf :c:func:`PySequence_Concat` zurück. Sie wird " +"außerdem von der erweiterten Zuweisung ``+=`` verwendet, nachdem die " +"numerische Addition an Ort und Stelle über den " +"Slot :c:member:`~PyNumberMethods.nb_inplace_add` versucht wurde." #: ../../c-api/typeobj.rst:2943 msgid "" @@ -4122,10 +5493,17 @@ msgid "" "augmented assignment ``*=``, after trying numeric in-place multiplication " "via the :c:member:`~PyNumberMethods.nb_inplace_multiply` slot." msgstr "" +"Diese Funktion wird von :c:func:`PySequence_InPlaceRepeat` verwendet und hat " +"dieselbe Signatur. Sie sollte ihren ersten Operanden ändern und zurückgeben. " +"Dieser Slot darf ``NULL`` bleiben. In diesem Fall fällt :c:func:`!" +"PySequence_InPlaceRepeat` auf :c:func:`PySequence_Repeat` zurück. Sie wird " +"außerdem von der erweiterten Zuweisung ``*=`` verwendet, nachdem die " +"numerische Multiplikation an Ort und Stelle über den " +"Slot :c:member:`~PyNumberMethods.nb_inplace_multiply` versucht wurde." #: ../../c-api/typeobj.rst:2954 msgid "Buffer Object Structures" -msgstr "" +msgstr "Strukturen für Pufferobjekte" #: ../../c-api/typeobj.rst:2958 msgid "" @@ -4133,16 +5511,20 @@ msgid "" "protocol `. The protocol defines how an exporter object can " "expose its internal data to consumer objects." msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, die das :ref:`Puffer-" +"Protokoll ` verlangt. Das Protokoll legt fest, wie ein " +"exportierendes Objekt seine internen Daten für verbrauchende Objekte " +"zugänglich machen kann." #: ../../c-api/typeobj.rst:2966 ../../c-api/typeobj.rst:3035 #: ../../c-api/typeobj.rst:3099 ../../c-api/typeobj.rst:3112 #: ../../c-api/typeobj.rst:3126 ../../c-api/typeobj.rst:3138 msgid "The signature of this function is::" -msgstr "" +msgstr "Die Signatur dieser Funktion lautet::" #: ../../c-api/typeobj.rst:2968 msgid "int (PyObject *exporter, Py_buffer *view, int flags);" -msgstr "" +msgstr "int (PyObject *exporter, Py_buffer *view, int flags);" #: ../../c-api/typeobj.rst:2970 msgid "" @@ -4150,46 +5532,55 @@ msgid "" "Except for point (3), an implementation of this function MUST take these " "steps:" msgstr "" +"Behandelt eine Anfrage an *exporter*, *view* so zu füllen, wie *flags* es " +"angibt. Abgesehen von Punkt (3) MUSS eine Umsetzung dieser Funktion diese " +"Schritte ausführen:" #: ../../c-api/typeobj.rst:2974 msgid "" "Check if the request can be met. If not, raise :exc:`BufferError`, set " "``view->obj`` to ``NULL`` and return ``-1``." msgstr "" +"Prüfen, ob die Anfrage erfüllt werden kann. Wenn nicht, :exc:`BufferError` " +"auslösen, ``view->obj`` auf ``NULL`` setzen und ``-1`` zurückgeben." #: ../../c-api/typeobj.rst:2977 msgid "Fill in the requested fields." -msgstr "" +msgstr "Die angefragten Felder füllen." #: ../../c-api/typeobj.rst:2979 msgid "Increment an internal counter for the number of exports." -msgstr "" +msgstr "Einen internen Zähler für die Anzahl der Exporte erhöhen." #: ../../c-api/typeobj.rst:2981 msgid "Set ``view->obj`` to *exporter* and increment ``view->obj``." -msgstr "" +msgstr "``view->obj`` auf *exporter* setzen und ``view->obj`` erhöhen." #: ../../c-api/typeobj.rst:2983 msgid "Return ``0``." -msgstr "" +msgstr "``0`` zurückgeben." #: ../../c-api/typeobj.rst:2985 ../../c-api/typeobj.rst:3048 msgid "**Thread safety:**" -msgstr "" +msgstr "**Thread-Sicherheit:**" #: ../../c-api/typeobj.rst:2987 msgid "In the :term:`free-threaded build`, implementations must ensure:" msgstr "" +"Im :term:`Build mit freien Threads ` müssen Umsetzungen " +"sicherstellen:" #: ../../c-api/typeobj.rst:2989 msgid "The export counter increment in step (3) is atomic." -msgstr "" +msgstr "Das Erhöhen des Exportzählers in Schritt (3) ist atomar." #: ../../c-api/typeobj.rst:2991 msgid "" "The underlying buffer data remains valid and at a stable memory location for " "the lifetime of all exports." msgstr "" +"Die zugrunde liegenden Pufferdaten bleiben gültig und an einer " +"unveränderlichen Speicherstelle, solange Exporte bestehen." #: ../../c-api/typeobj.rst:2994 msgid "" @@ -4197,34 +5588,46 @@ msgid "" "as :class:`bytearray`), the export counter is checked atomically before such " "operations, and :exc:`BufferError` is raised if exports exist." msgstr "" +"Bei Objekten, die sich in der Größe ändern oder neu belegen lassen " +"(wie :class:`bytearray`), wird der Exportzähler vor solchen Vorgängen atomar " +"geprüft, und es wird :exc:`BufferError` ausgelöst, wenn Exporte bestehen." #: ../../c-api/typeobj.rst:2998 msgid "The function is safe to call concurrently from multiple threads." msgstr "" +"Die Funktion lässt sich sicher gleichzeitig aus mehreren Threads aufrufen." #: ../../c-api/typeobj.rst:3000 msgid "" "See also :ref:`thread-safety-memoryview` for the Python-level thread safety " "guarantees of :class:`memoryview` objects." msgstr "" +"Siehe auch :ref:`thread-safety-memoryview` zu den Zusagen zur Thread-" +"Sicherheit von :class:`memoryview`-Objekten auf Python-Ebene." #: ../../c-api/typeobj.rst:3003 msgid "" "If *exporter* is part of a chain or tree of buffer providers, two main " "schemes can be used:" msgstr "" +"Ist *exporter* Teil einer Kette oder eines Baums von Pufferanbietern, sind " +"zwei grundlegende Vorgehensweisen möglich:" #: ../../c-api/typeobj.rst:3006 msgid "" "Re-export: Each member of the tree acts as the exporting object and sets " "``view->obj`` to a new reference to itself." msgstr "" +"Weiterexport: Jedes Mitglied des Baums tritt als exportierendes Objekt auf " +"und setzt ``view->obj`` auf eine neue Referenz auf sich selbst." #: ../../c-api/typeobj.rst:3009 msgid "" "Redirect: The buffer request is redirected to the root object of the tree. " "Here, ``view->obj`` will be a new reference to the root object." msgstr "" +"Umleitung: Die Pufferanfrage wird an das Wurzelobjekt des Baums umgeleitet. " +"Hier ist ``view->obj`` eine neue Referenz auf das Wurzelobjekt." #: ../../c-api/typeobj.rst:3013 msgid "" @@ -4233,6 +5636,10 @@ msgid "" "specific requests are in section :ref:`Buffer request types `." msgstr "" +"Die einzelnen Felder von *view* sind im Abschnitt :ref:`Pufferstruktur " +"` beschrieben, die Regeln, wie ein Exporteur auf bestimmte " +"Anfragen reagieren muss, stehen im Abschnitt :ref:`Arten von Pufferanfragen " +"`." #: ../../c-api/typeobj.rst:3018 msgid "" @@ -4241,22 +5648,31 @@ msgid "" "left. :c:member:`~Py_buffer.format`, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`, :c:member:`~Py_buffer.suboffsets` " "and :c:member:`~Py_buffer.internal` are read-only for the consumer." msgstr "" +"Aller Speicher, auf den die Struktur :c:type:`Py_buffer` zeigt, gehört dem " +"Exporteur und muss gültig bleiben, solange noch Verbraucher vorhanden " +"sind. :c:member:`~Py_buffer.format`, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`, :c:member:`~Py_buffer.suboffsets` " +"und :c:member:`~Py_buffer.internal` sind für den Verbraucher nur lesbar." #: ../../c-api/typeobj.rst:3025 msgid "" ":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes " "buffer while dealing correctly with all request types." msgstr "" +":c:func:`PyBuffer_FillInfo` bietet einen einfachen Weg, einen schlichten " +"Bytes-Puffer zugänglich zu machen und dabei alle Arten von Anfragen richtig " +"zu behandeln." #: ../../c-api/typeobj.rst:3028 msgid "" ":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps " "this function." msgstr "" +":c:func:`PyObject_GetBuffer` ist die Schnittstelle für den Verbraucher, die " +"diese Funktion umhüllt." #: ../../c-api/typeobj.rst:3037 msgid "void (PyObject *exporter, Py_buffer *view);" -msgstr "" +msgstr "void (PyObject *exporter, Py_buffer *view);" #: ../../c-api/typeobj.rst:3039 msgid "" @@ -4265,22 +5681,27 @@ msgid "" "``NULL``. Otherwise, a standard implementation of this function will take " "these optional steps:" msgstr "" +"Behandelt eine Anfrage, die Ressourcen des Puffers freizugeben. Müssen keine " +"Ressourcen freigegeben werden, " +"darf :c:member:`PyBufferProcs.bf_releasebuffer` ``NULL`` sein. Andernfalls " +"führt eine gewöhnliche Umsetzung dieser Funktion diese wahlfreien Schritte " +"aus:" #: ../../c-api/typeobj.rst:3044 msgid "Decrement an internal counter for the number of exports." -msgstr "" +msgstr "Einen internen Zähler für die Anzahl der Exporte verringern." #: ../../c-api/typeobj.rst:3046 msgid "If the counter is ``0``, free all memory associated with *view*." -msgstr "" +msgstr "Ist der Zähler ``0``, allen zu *view* gehörenden Speicher freigeben." #: ../../c-api/typeobj.rst:3050 msgid "In the :term:`free-threaded build`:" -msgstr "" +msgstr "Im :term:`Build mit freien Threads `:" #: ../../c-api/typeobj.rst:3052 msgid "The export counter decrement in step (1) must be atomic." -msgstr "" +msgstr "Das Verringern des Exportzählers in Schritt (1) muss atomar sein." #: ../../c-api/typeobj.rst:3054 msgid "" @@ -4288,6 +5709,10 @@ msgid "" "the final release may race with concurrent releases from other threads and " "deallocation must only happen once." msgstr "" +"Das Aufräumen der Ressourcen, wenn der Zähler null erreicht, muss atomar " +"geschehen, weil die letzte Freigabe mit gleichzeitigen Freigaben anderer " +"Threads um die Wette laufen kann und die Speicherfreigabe nur ein einziges " +"Mal geschehen darf." #: ../../c-api/typeobj.rst:3058 msgid "" @@ -4296,6 +5721,10 @@ msgid "" "constant, while a consumer MAY pass a copy of the original buffer as the " "*view* argument." msgstr "" +"Der Exporteur MUSS das Feld :c:member:`~Py_buffer.internal` verwenden, um " +"pufferspezifische Ressourcen zu verfolgen. Dieses Feld bleibt zugesichert " +"unverändert, während ein Verbraucher dem Argument *view* eine Kopie des " +"ursprünglichen Puffers übergeben DARF." #: ../../c-api/typeobj.rst:3064 msgid "" @@ -4303,22 +5732,30 @@ msgid "" "automatically in :c:func:`PyBuffer_Release` (this scheme is useful for " "breaking reference cycles)." msgstr "" +"Diese Funktion DARF ``view->obj`` NICHT verringern, weil das " +"in :c:func:`PyBuffer_Release` automatisch geschieht (diese Vorgehensweise " +"ist nützlich, um Referenzzyklen aufzubrechen)." #: ../../c-api/typeobj.rst:3069 msgid "" ":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this " "function." msgstr "" +":c:func:`PyBuffer_Release` ist die Schnittstelle für den Verbraucher, die " +"diese Funktion umhüllt." #: ../../c-api/typeobj.rst:3077 msgid "Async Object Structures" -msgstr "" +msgstr "Strukturen für Async-Objekte" #: ../../c-api/typeobj.rst:3083 msgid "" "This structure holds pointers to the functions required to " "implement :term:`awaitable` and :term:`asynchronous iterator` objects." msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, die nötig sind, " +"um :term:`abwartbare ` Objekte und :term:`asynchrone Iteratoren " +"` umzusetzen." #: ../../c-api/typeobj.rst:3088 msgid "" @@ -4329,60 +5766,81 @@ msgid "" " sendfunc am_send;\n" "} PyAsyncMethods;" msgstr "" +"typedef struct {\n" +" unaryfunc am_await;\n" +" unaryfunc am_aiter;\n" +" unaryfunc am_anext;\n" +" sendfunc am_send;\n" +"} PyAsyncMethods;" #: ../../c-api/typeobj.rst:3101 msgid "PyObject *am_await(PyObject *self);" -msgstr "" +msgstr "PyObject *am_await(PyObject *self);" #: ../../c-api/typeobj.rst:3103 msgid "" "The returned object must be an :term:`iterator`, i.e. :c:func:`PyIter_Check` " "must return ``1`` for it." msgstr "" +"Das zurückgegebene Objekt muss ein :term:`Iterator ` " +"sein, :c:func:`PyIter_Check` muss dafür also ``1`` zurückgeben." #: ../../c-api/typeobj.rst:3106 msgid "" "This slot may be set to ``NULL`` if an object is not an :term:`awaitable`." msgstr "" +"Dieser Slot darf auf ``NULL`` gesetzt werden, wenn ein Objekt " +"nicht :term:`abwartbar ` ist." #: ../../c-api/typeobj.rst:3114 msgid "PyObject *am_aiter(PyObject *self);" -msgstr "" +msgstr "PyObject *am_aiter(PyObject *self);" #: ../../c-api/typeobj.rst:3116 msgid "" "Must return an :term:`asynchronous iterator` object. " "See :meth:`~object.__anext__` for details." msgstr "" +"Muss ein Objekt zurückgeben, das ein :term:`asynchroner Iterator " +"` ist. Einzelheiten stehen " +"unter :meth:`~object.__anext__`." #: ../../c-api/typeobj.rst:3119 msgid "" "This slot may be set to ``NULL`` if an object does not implement " "asynchronous iteration protocol." msgstr "" +"Dieser Slot darf auf ``NULL`` gesetzt werden, wenn ein Objekt das Protokoll " +"für asynchrone Iteration nicht umsetzt." #: ../../c-api/typeobj.rst:3128 msgid "PyObject *am_anext(PyObject *self);" -msgstr "" +msgstr "PyObject *am_anext(PyObject *self);" #: ../../c-api/typeobj.rst:3130 msgid "" "Must return an :term:`awaitable` object. See :meth:`~object.__anext__` for " "details. This slot may be set to ``NULL``." msgstr "" +"Muss ein :term:`abwartbares ` Objekt zurückgeben. Einzelheiten " +"stehen unter :meth:`~object.__anext__`. Dieser Slot darf auf ``NULL`` " +"gesetzt werden." #: ../../c-api/typeobj.rst:3140 msgid "PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" msgstr "" +"PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" #: ../../c-api/typeobj.rst:3142 msgid "" "See :c:func:`PyIter_Send` for details. This slot may be set to ``NULL``." msgstr "" +"Einzelheiten stehen unter :c:func:`PyIter_Send`. Dieser Slot darf auf " +"``NULL`` gesetzt werden." #: ../../c-api/typeobj.rst:3151 msgid "Slot Type typedefs" -msgstr "" +msgstr "Typedefs für Slot-Typen" #: ../../c-api/typeobj.rst:3155 msgid "" @@ -4398,6 +5856,17 @@ msgid "" "``sizeof(void*)``; otherwise, *nitems* is not used and the length of the " "block should be :c:member:`~PyTypeObject.tp_basicsize`." msgstr "" +"Diese Funktion soll die Speicherbelegung von der Speicherinitialisierung " +"trennen. Sie sollte einen Zeiger auf einen Speicherblock zurückgeben, der " +"für die Instanz lang genug und passend ausgerichtet und mit Nullen " +"initialisiert ist, bei dem aber :c:member:`~PyObject.ob_refcnt` auf ``1`` " +"und :c:member:`~PyObject.ob_type` auf das Typargument gesetzt ist. " +"Ist :c:member:`~PyTypeObject.tp_itemsize` des Typs ungleich null, sollte das " +"Feld :c:member:`~PyVarObject.ob_size` des Objekts mit *nitems* initialisiert " +"werden, und die Länge des belegten Speicherblocks sollte ``tp_basicsize + " +"nitems*tp_itemsize`` sein, aufgerundet auf ein Vielfaches von " +"``sizeof(void*)``. Andernfalls wird *nitems* nicht verwendet, und die Länge " +"des Blocks sollte :c:member:`~PyTypeObject.tp_basicsize` sein." #: ../../c-api/typeobj.rst:3165 msgid "" @@ -4405,72 +5874,77 @@ msgid "" "allocate additional memory; that should be done " "by :c:member:`~PyTypeObject.tp_new`." msgstr "" +"Diese Funktion sollte keine weitere Initialisierung der Instanz vornehmen, " +"auch keinen zusätzlichen Speicher belegen. Das " +"sollte :c:member:`~PyTypeObject.tp_new` erledigen." #: ../../c-api/typeobj.rst:3172 msgid "See :c:member:`~PyTypeObject.tp_free`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_free`." #: ../../c-api/typeobj.rst:3176 msgid "See :c:member:`~PyTypeObject.tp_new`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_new`." #: ../../c-api/typeobj.rst:3180 msgid "See :c:member:`~PyTypeObject.tp_init`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_init`." #: ../../c-api/typeobj.rst:3184 msgid "See :c:member:`~PyTypeObject.tp_repr`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_repr`." #: ../../c-api/typeobj.rst:3188 ../../c-api/typeobj.rst:3197 msgid "Return the value of the named attribute for the object." -msgstr "" +msgstr "Gibt den Wert des benannten Attributs des Objekts zurück." #: ../../c-api/typeobj.rst:3192 ../../c-api/typeobj.rst:3203 msgid "" "Set the value of the named attribute for the object. The value argument is " "set to ``NULL`` to delete the attribute." msgstr "" +"Setzt den Wert des benannten Attributs des Objekts. Das Argument für den " +"Wert wird auf ``NULL`` gesetzt, um das Attribut zu löschen." #: ../../c-api/typeobj.rst:3199 msgid "See :c:member:`~PyTypeObject.tp_getattro`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_getattro`." #: ../../c-api/typeobj.rst:3206 msgid "See :c:member:`~PyTypeObject.tp_setattro`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_setattro`." #: ../../c-api/typeobj.rst:3210 msgid "See :c:member:`~PyTypeObject.tp_descr_get`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_descr_get`." #: ../../c-api/typeobj.rst:3214 msgid "See :c:member:`~PyTypeObject.tp_descr_set`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_descr_set`." #: ../../c-api/typeobj.rst:3218 msgid "See :c:member:`~PyTypeObject.tp_hash`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_hash`." #: ../../c-api/typeobj.rst:3222 msgid "See :c:member:`~PyTypeObject.tp_richcompare`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_richcompare`." #: ../../c-api/typeobj.rst:3226 msgid "See :c:member:`~PyTypeObject.tp_iter`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_iter`." #: ../../c-api/typeobj.rst:3230 msgid "See :c:member:`~PyTypeObject.tp_iternext`." -msgstr "" +msgstr "Siehe :c:member:`~PyTypeObject.tp_iternext`." #: ../../c-api/typeobj.rst:3244 msgid "See :c:member:`~PyAsyncMethods.am_send`." -msgstr "" +msgstr "Siehe :c:member:`~PyAsyncMethods.am_send`." #: ../../c-api/typeobj.rst:3260 msgid "Examples" -msgstr "" +msgstr "Beispiele" #: ../../c-api/typeobj.rst:3262 msgid "" @@ -4479,10 +5953,14 @@ msgid "" "more examples, practical info, and a tutorial, see :ref:`defining-new-types` " "and :ref:`new-types-topics`." msgstr "" +"Hier einige einfache Beispiele für Python-Typdefinitionen. Sie enthalten " +"gängige Verwendungen, auf die du stoßen wirst. Manche zeigen knifflige " +"Sonderfälle. Weitere Beispiele, praktische Hinweise und eine Einführung " +"stehen unter :ref:`defining-new-types` und :ref:`new-types-topics`." #: ../../c-api/typeobj.rst:3267 msgid "A basic :ref:`static type `::" -msgstr "" +msgstr "Ein einfacher :ref:`statischer Typ `::" #: ../../c-api/typeobj.rst:3269 msgid "" @@ -4501,12 +5979,28 @@ msgid "" " .tp_repr = (reprfunc)myobj_repr,\n" "};" msgstr "" +"typedef struct {\n" +" PyObject_HEAD\n" +" const char *data;\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject),\n" +" .tp_doc = PyDoc_STR(\"My objects\"),\n" +" .tp_new = myobj_new,\n" +" .tp_dealloc = (destructor)myobj_dealloc,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +"};" #: ../../c-api/typeobj.rst:3284 msgid "" "You may also find older code (especially in the CPython code base) with a " "more verbose initializer::" msgstr "" +"Du wirst möglicherweise auch älteren Code finden (besonders in der CPython-" +"Codebasis), der einen ausführlicheren Initialisierer verwendet::" #: ../../c-api/typeobj.rst:3287 msgid "" @@ -4551,10 +6045,52 @@ msgid "" " myobj_new, /* tp_new */\n" "};" msgstr "" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" \"mymod.MyObject\", /* tp_name */\n" +" sizeof(MyObject), /* tp_basicsize */\n" +" 0, /* tp_itemsize */\n" +" (destructor)myobj_dealloc, /* tp_dealloc */\n" +" 0, /* tp_vectorcall_offset */\n" +" 0, /* tp_getattr */\n" +" 0, /* tp_setattr */\n" +" 0, /* tp_as_async */\n" +" (reprfunc)myobj_repr, /* tp_repr */\n" +" 0, /* tp_as_number */\n" +" 0, /* tp_as_sequence */\n" +" 0, /* tp_as_mapping */\n" +" 0, /* tp_hash */\n" +" 0, /* tp_call */\n" +" 0, /* tp_str */\n" +" 0, /* tp_getattro */\n" +" 0, /* tp_setattro */\n" +" 0, /* tp_as_buffer */\n" +" 0, /* tp_flags */\n" +" PyDoc_STR(\"My objects\"), /* tp_doc */\n" +" 0, /* tp_traverse */\n" +" 0, /* tp_clear */\n" +" 0, /* tp_richcompare */\n" +" 0, /* tp_weaklistoffset */\n" +" 0, /* tp_iter */\n" +" 0, /* tp_iternext */\n" +" 0, /* tp_methods */\n" +" 0, /* tp_members */\n" +" 0, /* tp_getset */\n" +" 0, /* tp_base */\n" +" 0, /* tp_dict */\n" +" 0, /* tp_descr_get */\n" +" 0, /* tp_descr_set */\n" +" 0, /* tp_dictoffset */\n" +" 0, /* tp_init */\n" +" 0, /* tp_alloc */\n" +" myobj_new, /* tp_new */\n" +"};" #: ../../c-api/typeobj.rst:3328 msgid "A type that supports weakrefs, instance dicts, and hashing::" msgstr "" +"Ein Typ, der schwache Referenzen, Instanz-Dictionaries und Hashing " +"unterstützt::" #: ../../c-api/typeobj.rst:3330 msgid "" @@ -4581,6 +6117,28 @@ msgid "" " .tp_richcompare = PyBaseObject_Type.tp_richcompare,\n" "};" msgstr "" +"typedef struct {\n" +" PyObject_HEAD\n" +" const char *data;\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject),\n" +" .tp_doc = PyDoc_STR(\"My objects\"),\n" +" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |\n" +" Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_MANAGED_DICT |\n" +" Py_TPFLAGS_MANAGED_WEAKREF,\n" +" .tp_new = myobj_new,\n" +" .tp_traverse = (traverseproc)myobj_traverse,\n" +" .tp_clear = (inquiry)myobj_clear,\n" +" .tp_alloc = PyType_GenericNew,\n" +" .tp_dealloc = (destructor)myobj_dealloc,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +" .tp_hash = (hashfunc)myobj_hash,\n" +" .tp_richcompare = PyBaseObject_Type.tp_richcompare,\n" +"};" #: ../../c-api/typeobj.rst:3353 msgid "" @@ -4588,6 +6146,10 @@ msgid "" "instances (e.g. uses a separate factory func) " "using :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag::" msgstr "" +"Eine str-Unterklasse, von der sich keine Unterklassen bilden lassen und die " +"sich nicht aufrufen lässt, um Instanzen zu erzeugen (die also zum Beispiel " +"eine eigene Fabrikfunktion verwendet), mithilfe des " +"Flags :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION`::" #: ../../c-api/typeobj.rst:3357 msgid "" @@ -4606,11 +6168,27 @@ msgid "" " .tp_repr = (reprfunc)myobj_repr,\n" "};" msgstr "" +"typedef struct {\n" +" PyUnicodeObject raw;\n" +" char *extra;\n" +"} MyStr;\n" +"\n" +"static PyTypeObject MyStr_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyStr\",\n" +" .tp_basicsize = sizeof(MyStr),\n" +" .tp_base = NULL, // set to &PyUnicode_Type in module init\n" +" .tp_doc = PyDoc_STR(\"my custom str\"),\n" +" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +"};" #: ../../c-api/typeobj.rst:3372 msgid "" "The simplest :ref:`static type ` with fixed-length instances::" msgstr "" +"Der einfachste :ref:`statische Typ ` mit Instanzen fester " +"Länge::" #: ../../c-api/typeobj.rst:3374 msgid "" @@ -4623,12 +6201,22 @@ msgid "" " .tp_name = \"mymod.MyObject\",\n" "};" msgstr "" +"typedef struct {\n" +" PyObject_HEAD\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +"};" #: ../../c-api/typeobj.rst:3383 msgid "" "The simplest :ref:`static type ` with variable-length " "instances::" msgstr "" +"Der einfachste :ref:`statische Typ ` mit Instanzen " +"veränderlicher Länge::" #: ../../c-api/typeobj.rst:3385 msgid "" @@ -4644,15 +6232,26 @@ msgid "" " .tp_itemsize = sizeof(char *),\n" "};" msgstr "" +"typedef struct {\n" +" PyObject_VAR_HEAD\n" +" const char *data[1];\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject) - sizeof(char *),\n" +" .tp_itemsize = sizeof(char *),\n" +"};" #: ../../c-api/typeobj.rst:928 ../../c-api/typeobj.rst:995 msgid "built-in function" -msgstr "" +msgstr "eingebaute Funktion" #: ../../c-api/typeobj.rst:928 msgid "repr" -msgstr "" +msgstr "repr" #: ../../c-api/typeobj.rst:995 msgid "hash" -msgstr "" +msgstr "hash" diff --git a/howto/abi3t-migration.po b/howto/abi3t-migration.po index 7c6fe664..13a3d43e 100644 --- a/howto/abi3t-migration.po +++ b/howto/abi3t-migration.po @@ -501,7 +501,6 @@ msgid "Module export hook" msgstr "Export-Haken des Moduls" #: ../../howto/abi3t-migration.rst:233 -#, fuzzy msgid "" "Unless you've done this step already, your extension module defines " "a :ref:`module initialization function ` " @@ -512,9 +511,10 @@ msgid "" msgstr "" "Sofern du diesen Schritt nicht schon erledigt hast, definiert dein " "Erweiterungsmodul eine :ref:`Initialisierungsfunktion ` " -"namens :samp:`PyInit_{}`. Du musst sie auf einen :ref:`Export-" -"Haken ` portieren, :samp:`PyModExport_{}" -"` – eine Funktionalität, die in CPython 3.15 mit :pep:`793` ergänzt wurde." +"namens :samp:`PyInit_{}` (wobei ``modname`` der Name deines Moduls " +"ist). Du musst sie auf einen :ref:`Export-Haken ` " +"portieren, :samp:`PyModExport_{}` – eine Funktionalität, die in " +"CPython 3.15 mit :pep:`793` ergänzt wurde." #: ../../howto/abi3t-migration.rst:240 msgid "" diff --git a/howto/functional.po b/howto/functional.po index c020fda5..e9dbb999 100644 --- a/howto/functional.po +++ b/howto/functional.po @@ -1305,14 +1305,14 @@ msgstr "" "bilden die Eigenschaften von Generatorausdrücken nach:" #: ../../howto/functional.rst:630 -#, fuzzy msgid "" ":func:`map(f, iterA, iterB, ...) ` returns an iterator over the " "sequence ``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], " "iterB[2]), ...``." msgstr "" -":func:`map(f, iterA, iterB, ...) ` gibt einen Iterator über die Sequenz " -"zurück" +":func:`map(f, iterA, iterB, ...) ` gibt einen Iterator über die " +"Sequenz ``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], " +"iterB[2]), ...`` zurück." #: ../../howto/functional.rst:641 msgid "You can of course achieve the same effect with a list comprehension." diff --git a/library/argparse.po b/library/argparse.po index 23f5db3d..3fe8435d 100644 --- a/library/argparse.po +++ b/library/argparse.po @@ -348,9 +348,8 @@ msgid "" msgstr "" #: ../../library/argparse.rst:221 -#, fuzzy msgid "``description``" -msgstr "Beschreibung" +msgstr "``description``" #: ../../library/argparse.rst:223 msgid "" @@ -1460,9 +1459,8 @@ msgid "" msgstr "" #: ../../library/argparse.rst:1014 -#, fuzzy msgid "``default``" -msgstr "Standard" +msgstr "``default``" #: ../../library/argparse.rst:1016 msgid "" @@ -1569,9 +1567,8 @@ msgid "" msgstr "" #: ../../library/argparse.rst:1084 -#, fuzzy msgid "``type``" -msgstr "Typ" +msgstr "``type``" #: ../../library/argparse.rst:1086 msgid "" @@ -1778,9 +1775,8 @@ msgid "" msgstr "" #: ../../library/argparse.rst:1232 -#, fuzzy msgid "``help``" -msgstr "help" +msgstr "``help``" #: ../../library/argparse.rst:1234 msgid "" diff --git a/library/time.po b/library/time.po index 511c20c0..0ff8557e 100644 --- a/library/time.po +++ b/library/time.po @@ -242,7 +242,6 @@ msgid "Functions" msgstr "Funktionen" #: ../../library/time.rst:127 -#, fuzzy msgid "" "Convert a tuple or :class:`struct_time` representing a time as returned " "by :func:`gmtime` or :func:`localtime` to a string of the following form: " @@ -250,22 +249,21 @@ msgid "" "space padded if the day is a single digit, for example: ``'Wed Jun 9 " "04:26:40 1993'``." msgstr "" -"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so darstellt, " -"wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in eine " -"Zeichenkette der folgenden Form um: ``'Sun Jun 20 23:21:05 1993'``. Das " -"Tagesfeld ist zwei Zeichen breit und wird bei einstelligem Tag mit einem " -"Leerzeichen aufgefüllt, zum Beispiel: ``'Wed Jun 9 04:26:40 1993'``." +"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so " +"darstellt, wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in " +"eine Zeichenkette der folgenden Form um: ``'Sun Jun 20 23:21:05 1993'``. " +"Das Tagesfeld ist zwei Zeichen breit und wird bei einstelligem Tag mit " +"einem Leerzeichen aufgefüllt, zum Beispiel: ``'Wed Jun 9 04:26:40 1993'``." #: ../../library/time.rst:133 -#, fuzzy msgid "" "If *time_tuple* is not provided, the current time as returned " "by :func:`localtime` is used. Locale information is not used " "by :func:`asctime`." msgstr "" -"Ist *t* nicht angegeben, wird die aktuelle Zeit verwendet, " -"wie :func:`localtime` sie zurückgibt. :func:`asctime` verwendet keine " -"Angaben aus dem Gebietsschema." +"Ist *time_tuple* nicht angegeben, wird die aktuelle Zeit verwendet, wie " +":func:`localtime` sie zurückgibt. :func:`asctime` verwendet keine Angaben " +"aus dem Gebietsschema." #: ../../library/time.rst:139 msgid "" @@ -378,7 +376,6 @@ msgid "Similar to :func:`clock_settime` but set time with nanoseconds." msgstr "Wie :func:`clock_settime`, setzt die Zeit aber in Nanosekunden." #: ../../library/time.rst:220 -#, fuzzy msgid "" "Convert a time expressed in seconds since the epoch_ to a string of a form: " "``'Sun Jun 20 23:21:05 1993'`` representing local time. The day field is two " @@ -392,17 +389,16 @@ msgstr "" "1993'``." #: ../../library/time.rst:225 -#, fuzzy msgid "" "If *seconds* is not provided or :const:`None`, the current time as returned " "by :func:`.time` is used. ``ctime(seconds)`` is equivalent to " "``asctime(localtime(seconds))``. Locale information is not used " "by :func:`ctime`." msgstr "" -"Ist *secs* nicht angegeben oder :const:`None`, wird die aktuelle Zeit " -"verwendet, wie :func:`.time` sie zurückgibt. ``ctime(secs)`` entspricht " -"``asctime(localtime(secs))``. :func:`ctime` verwendet keine Angaben aus dem " -"Gebietsschema." +"Ist *seconds* nicht angegeben oder :const:`None`, wird die aktuelle Zeit " +"verwendet, wie :func:`.time` sie zurückgibt. ``ctime(seconds)`` entspricht " +"``asctime(localtime(seconds))``. :func:`ctime` verwendet keine Angaben aus " +"dem Gebietsschema." #: ../../library/time.rst:230 ../../library/time.rst:268 #: ../../library/time.rst:285 ../../library/time.rst:448 @@ -471,7 +467,6 @@ msgid "*resolution*: The resolution of the clock in seconds (:class:`float`)" msgstr "*resolution*: Die Auflösung der Uhr in Sekunden (:class:`float`)" #: ../../library/time.rst:261 -#, fuzzy msgid "" "Convert a time expressed in seconds since the epoch_ to " "a :class:`struct_time` in UTC in which the dst flag is always zero. If " @@ -480,24 +475,24 @@ msgid "" "a description of the :class:`struct_time` object. " "See :func:`calendar.timegm` for the inverse of this function." msgstr "" -"Wandelt eine in Sekunden seit der Epoche (epoch_) angegebene Zeit in " -"ein :class:`struct_time` in UTC um, bei dem das dst-Flag immer null ist. Ist " -"*secs* nicht angegeben oder :const:`None`, wird die aktuelle Zeit verwendet, " -"wie :func:`.time` sie zurückgibt. Bruchteile einer Sekunde werden nicht " -"beachtet. Eine Beschreibung des :class:`struct_time`-Objekts steht weiter " -"oben. Die Umkehrung dieser Funktion ist :func:`calendar.timegm`." +"Wandelt eine in Sekunden seit der Epoche (epoch_) angegebene Zeit in ein " +":class:`struct_time` in UTC um, bei dem das dst-Flag immer null ist. Ist " +"*seconds* nicht angegeben oder :const:`None`, wird die aktuelle Zeit " +"verwendet, wie :func:`.time` sie zurückgibt. Bruchteile einer Sekunde " +"werden nicht beachtet. Eine Beschreibung des :class:`struct_time`-Objekts " +"steht weiter oben. Die Umkehrung dieser Funktion ist " +":func:`calendar.timegm`." #: ../../library/time.rst:274 -#, fuzzy msgid "" "Like :func:`gmtime` but converts to local time. If *seconds* is not provided " "or :const:`None`, the current time as returned by :func:`.time` is used. The " "dst flag is set to ``1`` when DST applies to the given time." msgstr "" -"Wie :func:`gmtime`, rechnet aber in die Ortszeit um. Ist *secs* nicht " -"angegeben oder :const:`None`, wird die aktuelle Zeit verwendet, " -"wie :func:`.time` sie zurückgibt. Das dst-Flag wird auf ``1`` gesetzt, wenn " -"für die angegebene Zeit die Sommerzeit gilt." +"Wie :func:`gmtime`, rechnet aber in die Ortszeit um. Ist *seconds* nicht " +"angegeben oder :const:`None`, wird die aktuelle Zeit verwendet, wie " +":func:`.time` sie zurückgibt. Das dst-Flag wird auf ``1`` gesetzt, wenn für " +"die angegebene Zeit die Sommerzeit gilt." #: ../../library/time.rst:279 msgid "" @@ -702,7 +697,6 @@ msgid "Windows implementation" msgstr "Windows-Implementierung" #: ../../library/time.rst:409 -#, fuzzy msgid "" "On Windows, if *seconds* is zero, the thread relinquishes the remainder of " "its time slice to any other thread that is ready to run. If there are no " @@ -712,13 +706,14 @@ msgid "" "synchapi-createwaitabletimerexw>`_ which provides resolution of 100 " "nanoseconds. If *seconds* is zero, ``Sleep(0)`` is used." msgstr "" -"Ist *secs* unter Windows null, gibt der Thread den Rest seiner Zeitscheibe " -"an jeden anderen lauffähigen Thread ab. Gibt es keine anderen lauffähigen " -"Threads, kehrt die Funktion sofort zurück, und der Thread läuft weiter. " -"Unter Windows 10 und neuer verwendet die Implementierung einen " -"`hochauflösenden Zeitgeber `_, der eine Auflösung von 100 " -"Nanosekunden bietet. Ist *secs* null, wird ``Sleep(0)`` verwendet." +"Ist *seconds* unter Windows null, gibt der Thread den Rest seiner " +"Zeitscheibe an jeden anderen lauffähigen Thread ab. Gibt es keine anderen " +"lauffähigen Threads, kehrt die Funktion sofort zurück, und der Thread läuft " +"weiter. Unter Windows 10 und neuer verwendet die Implementierung einen " +"`hochauflösenden Zeitgeber " +"`_, der eine Auflösung von 100 Nanosekunden bietet. Ist " +"*seconds* null, wird ``Sleep(0)`` verwendet." #: ../../library/time.rst:421 msgid "Unix implementation" @@ -755,22 +750,20 @@ msgstr "" "stattdessen :func:`os.sched_yield`." #: ../../library/time.rst:433 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``time.sleep`` with argument " "``seconds``." msgstr "" -"Löst ein :ref:`Auditing-Ereignis ` ``time.sleep`` mit dem Argument " -"``secs`` aus." +"Löst ein :ref:`Auditing-Ereignis ` ``time.sleep`` mit dem " +"Argument ``seconds`` aus." #: ../../library/time.rst:435 -#, fuzzy msgid "" "The function now sleeps at least *seconds* even if the sleep is interrupted " "by a signal, except if the signal handler raises an exception " "(see :pep:`475` for the rationale)." msgstr "" -"Die Funktion schläft jetzt mindestens *secs*, auch wenn das Schlafen von " +"Die Funktion schläft jetzt mindestens *seconds*, auch wenn das Schlafen von " "einem Signal unterbrochen wird, außer wenn der Signalhandler eine Ausnahme " "auslöst (die Begründung steht in :pep:`475`)." @@ -788,7 +781,6 @@ msgid "Raises an auditing event." msgstr "Löst ein Auditing-Ereignis aus." #: ../../library/time.rst:456 -#, fuzzy msgid "" "Convert a tuple or :class:`struct_time` representing a time as returned " "by :func:`gmtime` or :func:`localtime` to a string as specified by the " @@ -797,12 +789,13 @@ msgid "" "string. :exc:`ValueError` is raised if any field in *time_tuple* is outside " "of the allowed range." msgstr "" -"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so darstellt, " -"wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in eine " -"Zeichenkette um, wie das Argument *format* sie angibt. Ist *t* nicht " -"angegeben, wird die aktuelle Zeit verwendet, wie :func:`localtime` sie " -"zurückgibt. *format* muss eine Zeichenkette sein. Liegt ein Feld in *t* " -"außerhalb des zulässigen Bereichs, wird :exc:`ValueError` ausgelöst." +"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so " +"darstellt, wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in " +"eine Zeichenkette um, wie das Argument *format* sie angibt. Ist " +"*time_tuple* nicht angegeben, wird die aktuelle Zeit verwendet, wie " +":func:`localtime` sie zurückgibt. *format* muss eine Zeichenkette sein. " +"Liegt ein Feld in *time_tuple* außerhalb des zulässigen Bereichs, wird " +":exc:`ValueError` ausgelöst." #: ../../library/time.rst:462 msgid "" @@ -888,9 +881,8 @@ msgid "``%f``" msgstr "``%f``" #: ../../library/time.rst:488 -#, fuzzy msgid "Microseconds as a decimal number [000000,999999]." -msgstr "Mikrosekunden als Dezimalzahl" +msgstr "Mikrosekunden als Dezimalzahl [000000,999999]." #: ../../library/time.rst:488 msgid "\\(1)" diff --git a/library/tkinter.po b/library/tkinter.po index 70b792c7..b418ee7a 100644 --- a/library/tkinter.po +++ b/library/tkinter.po @@ -1745,7 +1745,6 @@ msgid "bitmap" msgstr "bitmap" #: ../../library/tkinter.rst:783 -#, fuzzy msgid "" "There are ten built-in, named bitmaps: ``'error'``, ``'gray12'``, " "``'gray25'``, ``'gray50'``, ``'gray75'``, ``'hourglass'``, ``'info'``, " @@ -1758,9 +1757,13 @@ msgid "" msgstr "" "Es gibt zehn integrierte, benannte Bitmaps: ``'error'``, ``'gray12'``, " "``'gray25'``, ``'gray50'``, ``'gray75'``, ``'hourglass'``, ``'info'``, " -"``'questhead'``, ``'question'``, ``'warning'``. Um einen X-Bitmap-Dateinamen " -"anzugeben, nenne den vollständigen Pfad zur Datei mit vorangestelltem ``@``, " -"etwa ``\"@/usr/contrib/bitmap/gumby.bit\"``." +"``'questhead'``, ``'question'``, ``'warning'``. Unter macOS sind außerdem " +"diese Bitmaps verfügbar: ``'application'``, ``'accessory'``, ``'folder'``, " +"``'pfolder'``, ``'trash'``, ``'floppy'``, ``'ramdisk'``, ``'cdrom'``, " +"``'preferences'``, ``'querydoc'``, ``'stop'``, ``'note'`` und " +"``'caution'``. Um einen X-Bitmap-Dateinamen anzugeben, nenne den " +"vollständigen Pfad zur Datei mit vorangestelltem ``@``, etwa " +"``\"@/usr/contrib/bitmap/gumby.bit\"``." #: ../../library/tkinter.rst:793 msgid "boolean" @@ -1889,7 +1892,6 @@ msgid "font" msgstr "font" #: ../../library/tkinter.rst:861 -#, fuzzy msgid "" "Tk uses a font description such as ``{courier 10 bold}``; in :mod:`!tkinter` " "this is most naturally passed as a tuple of ``(family, size, *styles)`` (or " @@ -1899,11 +1901,13 @@ msgid "" "a :class:`tkinter.font.Font` instance, or, on X11, an XLFD font name can be " "used as well." msgstr "" -"Tk verwendet eine Schriftbeschreibung wie ``{courier 10 bold}``. In :mod:`!" -"tkinter` übergibt man sie am natürlichsten als Tupel ``(family, size, " -"*styles)`` (oder als die gleichwertige Zeichenkette ``\"Courier 10 " +"Tk verwendet eine Schriftbeschreibung wie ``{courier 10 bold}``. In " +":mod:`!tkinter` übergibt man sie am natürlichsten als Tupel ``(family, " +"size, *styles)`` (oder als die gleichwertige Zeichenkette ``\"Courier 10 " "bold\"``). Schriftgrößen mit positiven Zahlen werden in Punkt gemessen, " -"Größen mit negativen Zahlen in Pixeln." +"Größen mit negativen Zahlen in Pixeln. Auch der Name einer benannten " +"Schrift wie ``\"TkDefaultFont\"``, eine :class:`tkinter.font.Font`-Instanz " +"oder, unter X11, ein XLFD-Schriftname lässt sich verwenden." #: ../../library/tkinter.rst:870 msgid "justify" @@ -1922,11 +1926,8 @@ msgid "orient" msgstr "" #: ../../library/tkinter.rst:874 -#, fuzzy msgid "Legal values are ``\"horizontal\"`` and ``\"vertical\"``." -msgstr "" -"Zulässige Werte sind die Zeichenketten ``\"left\"``, ``\"center\"`` und " -"``\"right\"``." +msgstr "Zulässige Werte sind ``\"horizontal\"`` und ``\"vertical\"``." #: ../../library/tkinter.rst:876 msgid "padding" @@ -1946,7 +1947,6 @@ msgid "region" msgstr "region" #: ../../library/tkinter.rst:886 -#, fuzzy msgid "" "Used for the *scrollregion* option of :class:`Canvas`. This is a string with " "four space-delimited elements, each of which is a legal distance (see " @@ -1954,10 +1954,12 @@ msgid "" "``(2, 3, 4, 5)``, ``\"3i 2i 4.5i 2i\"`` and ``\"3c 2c 4c 10.43c\"`` are all " "legal regions." msgstr "" -"Das ist eine Zeichenkette mit vier durch Leerzeichen getrennten Elementen, " -"von denen jedes ein zulässiger Abstand ist (siehe oben). Zum Beispiel sind " -"``\"2 3 4 5\"``, ``\"3i 2i 4.5i 2i\"`` und ``\"3c 2c 4c 10.43c\"`` alles " -"zulässige Regionen." +"Wird für die Option *scrollregion* von :class:`Canvas` verwendet. Das ist " +"eine Zeichenkette mit vier durch Leerzeichen getrennten Elementen, von " +"denen jedes ein zulässiger Abstand ist (siehe oben), oder eine Sequenz aus " +"vier solchen Elementen. Zum Beispiel sind ``\"2 3 4 5\"``, ``(2, 3, 4, " +"5)``, ``\"3i 2i 4.5i 2i\"`` und ``\"3c 2c 4c 10.43c\"`` alles zulässige " +"Regionen." #: ../../library/tkinter.rst:893 msgid "relief" @@ -2614,7 +2616,6 @@ msgstr "" "Gibt eine Liste der Namen aller Konfigurationsoptionen dieses Widgets zurück." #: ../../library/tkinter.rst:1161 -#, fuzzy msgid "" "Interpret the string *s* as a Tcl boolean and return the " "corresponding :class:`bool`. Tcl accepts values such as ``'1'``, ``'0'``, " @@ -2623,8 +2624,9 @@ msgid "" msgstr "" "Deutet die Zeichenkette *s* als Tcl-Wahrheitswert und gibt den " "entsprechenden :class:`bool` zurück. Tcl akzeptiert Werte wie ``'1'``, " -"``'0'``, ``'yes'``, ``'no'``, ``'true'`` und ``'false'``. " -"Löst :exc:`ValueError` aus, wenn *s* kein gültiger Wahrheitswert ist." +"``'0'``, ``'yes'``, ``'no'``, ``'true'``, ``'false'``, ``'on'`` und " +"``'off'``. Löst :exc:`ValueError` aus, wenn *s* kein gültiger Wahrheitswert " +"ist." #: ../../library/tkinter.rst:1169 msgid "" @@ -5823,7 +5825,6 @@ msgstr "" "und 1." #: ../../library/tkinter.rst:3327 -#, fuzzy msgid "" "Shift the view left or right by *number* units. *what* is either ``'units'`` " "or ``'pages'``; a negative *number* scrolls left and a positive one scrolls " @@ -5832,7 +5833,9 @@ msgid "" msgstr "" "Verschiebt den Ausschnitt um *number* Einheiten nach links oder rechts. " "*what* ist entweder ``'units'`` oder ``'pages'``. Ein negatives *number* " -"blättert nach links, ein positives nach rechts." +"blättert nach links, ein positives nach rechts. Das :class:`Text`-Widget " +"nimmt außerdem ``'pixels'`` an, dann darf *number* ein Bildschirmabstand " +"wie ``'1i'`` sein." #: ../../library/tkinter.rst:3336 msgid "" @@ -5873,16 +5876,17 @@ msgstr "" "1." #: ../../library/tkinter.rst:3359 -#, fuzzy msgid "" "Shift the view up or down by *number* units. *what* is either ``'units'`` or " "``'pages'``; a negative *number* scrolls up and a positive one scrolls down. " "The :class:`Text` widget accepts also ``'pixels'``, and then *number* can be " "a screen distance, such as ``'1i'``." msgstr "" -"Verschiebt den Ausschnitt um *number* Einheiten nach oben oder unten. *what* " -"ist entweder ``'units'`` oder ``'pages'``. Ein negatives *number* blättert " -"nach oben, ein positives nach unten." +"Verschiebt den Ausschnitt um *number* Einheiten nach oben oder unten. " +"*what* ist entweder ``'units'`` oder ``'pages'``. Ein negatives *number* " +"blättert nach oben, ein positives nach unten. Das :class:`Text`-Widget " +"nimmt außerdem ``'pixels'`` an, dann darf *number* ein Bildschirmabstand " +"wie ``'1i'`` sein." #: ../../library/tkinter.rst:3368 msgid "" diff --git a/library/turtle.po b/library/turtle.po index 64a0da62..51e77a2b 100644 --- a/library/turtle.po +++ b/library/turtle.po @@ -561,7 +561,6 @@ msgstr "" "sein (z. B. wie von :func:`pos` zurückgegeben)." #: ../../library/turtle.rst:336 -#, fuzzy msgid "" ">>> tp = turtle.pos()\n" ">>> tp\n" @@ -579,13 +578,13 @@ msgstr "" ">>> tp = turtle.pos()\n" ">>> tp\n" "(0.00,0.00)\n" -">>> turtle.setpos(60,30)\n" +">>> turtle.goto(60,30)\n" ">>> turtle.pos()\n" "(60.00,30.00)\n" -">>> turtle.setpos((20,80))\n" +">>> turtle.goto((20,80))\n" ">>> turtle.pos()\n" "(20.00,80.00)\n" -">>> turtle.setpos(tp)\n" +">>> turtle.goto(tp)\n" ">>> turtle.pos()\n" "(0.00,0.00)" @@ -849,15 +848,15 @@ msgid "a colorstring or a numeric color tuple" msgstr "ein Farbstring oder ein numerisches Farb-Tupel" #: ../../library/turtle.rst:536 -#, fuzzy msgid "" "Draw a circular dot with diameter *size*, using *color*. If *size* is not " "given, the larger of ``pensize + 4`` and ``2 * pensize`` is used. If *color* " "is not given, the current pencolor is used." msgstr "" "Zeichne einen kreisförmigen Punkt mit dem Durchmesser *size* in der Farbe " -"*color*. Wird *size* nicht angegeben, wird das Maximum aus ``pensize+4`` und " -"``2*pensize`` verwendet." +"*color*. Wird *size* nicht angegeben, wird das Maximum aus ``pensize + 4`` " +"und ``2 * pensize`` verwendet. Wird *color* nicht angegeben, wird die " +"aktuelle Stiftfarbe verwendet." #: ../../library/turtle.rst:540 msgid "" @@ -1083,7 +1082,6 @@ msgid "a number if *x* is a number, else ``None``" msgstr "eine Zahl, falls *x* eine Zahl ist, andernfalls ``None``" #: ../../library/turtle.rst:675 -#, fuzzy msgid "" "Return the angle of the line from the turtle's position to (x,y). If *y* is " "``None``, *x* must be a pair of coordinates, a :class:`Vec2D`, for example " @@ -1091,10 +1089,11 @@ msgid "" "the turtle's start orientation, which depends on the turtle mode, " "see :func:`mode`." msgstr "" -"Gib den Winkel zwischen der Linie von der Position der Turtle zu der durch " -"(x,y), den Vektor oder die andere Turtle angegebenen Position zurück. Dies " -"hängt von der Startausrichtung der Turtle ab, die wiederum vom Modus abhängt " -"– \"standard\"/\"world\" oder \"logo\"." +"Gib den Winkel der Linie von der Position der Turtle zu (x,y) zurück. Ist " +"*y* ``None``, muss *x* ein Koordinatenpaar sein, ein :class:`Vec2D` – zum " +"Beispiel wie von :func:`pos` zurückgegeben – oder eine andere Turtle. Der " +"Winkel wird von der Startausrichtung der Turtle aus gemessen, die vom " +"Turtle-Modus abhängt, siehe :func:`mode`." #: ../../library/turtle.rst:681 msgid "" @@ -1247,12 +1246,12 @@ msgstr "" "90.0" #: ../../library/turtle.rst:788 -#, fuzzy msgid "" "Set the angle measurement units to radians. Equivalent to ``degrees(2 * " "math.pi)``." msgstr "" -"Setze die Winkelmesseinheiten auf Radiant. Entspricht ``degrees(2*math.pi)``." +"Setze die Winkelmesseinheiten auf Radiant. Entspricht ``degrees(2 * " +"math.pi)``." #: ../../library/turtle.rst:791 msgid "" @@ -2453,13 +2452,12 @@ msgstr "" "und denselben Turtle-Eigenschaften zurück." #: ../../library/turtle.rst:1517 -#, fuzzy msgid "" ">>> leonel = Turtle()\n" ">>> marco = leonel.clone()" msgstr "" -">>> mick = Turtle()\n" -">>> joe = mick.clone()" +">>> leonel = Turtle()\n" +">>> marco = leonel.clone()" #: ../../library/turtle.rst:1527 #, fuzzy @@ -3575,14 +3573,13 @@ msgid "Example:" msgstr "Beispiel:" #: ../../library/turtle.rst:2248 -#, fuzzy msgid "" ">>> poly = ((0,0), (10,-5), (0,10), (-10,-5))\n" ">>> s = Shape(\"compound\")\n" ">>> s.addcomponent(poly, \"red\", \"blue\")\n" ">>> # ... add more components and then use register_shape()" msgstr "" -">>> poly = ((0,0),(10,-5),(0,10),(-10,-5))\n" +">>> poly = ((0,0), (10,-5), (0,10), (-10,-5))\n" ">>> s = Shape(\"compound\")\n" ">>> s.addcomponent(poly, \"red\", \"blue\")\n" ">>> # ... add more components and then use register_shape()" @@ -3754,7 +3751,6 @@ msgid "For example:" msgstr "Zum Beispiel:" #: ../../library/turtle.rst:2347 -#, fuzzy msgid "" ">>> s = Shape(\"compound\")\n" ">>> poly1 = ((0,0), (10,-5), (0,10), (-10,-5))\n" @@ -3763,9 +3759,9 @@ msgid "" ">>> s.addcomponent(poly2, \"blue\", \"red\")" msgstr "" ">>> s = Shape(\"compound\")\n" -">>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))\n" +">>> poly1 = ((0,0), (10,-5), (0,10), (-10,-5))\n" ">>> s.addcomponent(poly1, \"red\", \"blue\")\n" -">>> poly2 = ((0,0),(10,-5),(-10,-5))\n" +">>> poly2 = ((0,0), (10,-5), (-10,-5))\n" ">>> s.addcomponent(poly2, \"blue\", \"red\")" #: ../../library/turtle.rst:2356 diff --git a/reference/compound_stmts.po b/reference/compound_stmts.po index c32d9054..f7cdbc44 100644 --- a/reference/compound_stmts.po +++ b/reference/compound_stmts.po @@ -3416,7 +3416,6 @@ msgstr "" "Deklarationen::" #: ../../reference/compound_stmts.rst:1850 -#, fuzzy msgid "" "def overly_generic[\n" " SimpleTypeVar,\n" @@ -3435,9 +3434,9 @@ msgid "" msgstr "" "def overly_generic[\n" " SimpleTypeVar,\n" -" TypeVarWithDefault = int,\n" " TypeVarWithBound: int,\n" " TypeVarWithConstraints: (str, bytes),\n" +" TypeVarWithDefault = int,\n" " *SimpleTypeVarTuple = (int, float),\n" " **SimpleParamSpec = (str, bytearray),\n" "](\n" diff --git a/using/cmdline.po b/using/cmdline.po index 86f5f34d..5f0575bd 100644 --- a/using/cmdline.po +++ b/using/cmdline.po @@ -1210,17 +1210,17 @@ msgstr "" "auch :envvar:`PYTHON_PERF_JIT_SUPPORT` und :ref:`perf_profiling`." #: ../../using/cmdline.rst:655 -#, fuzzy msgid "" "``-X disable-remote-debug`` disables the remote debugging support as " "described in :pep:`768`. This includes both the functionality to schedule " "code for execution in another process and the functionality to receive code " "for execution in the current process." msgstr "" -"``-X disable_remote_debug`` schaltet die Unterstützung für das Fern-" -"Debugging ab, wie sie in :pep:`768` beschrieben ist. Das betrifft sowohl die " -"Möglichkeit, Code zur Ausführung in einem anderen Prozess einzuplanen, als " -"auch die Möglichkeit, Code zur Ausführung im aktuellen Prozess zu empfangen." +"``-X disable-remote-debug`` schaltet die Unterstützung für das " +"Fern-Debugging ab, wie sie in :pep:`768` beschrieben ist. Das betrifft " +"sowohl die Möglichkeit, Code zur Ausführung in einem anderen Prozess " +"einzuplanen, als auch die Möglichkeit, Code zur Ausführung im aktuellen " +"Prozess zu empfangen." #: ../../using/cmdline.rst:660 msgid "" diff --git a/using/ios.po b/using/ios.po index a2b62b72..5b302b39 100644 --- a/using/ios.po +++ b/using/ios.po @@ -75,7 +75,6 @@ msgstr "" "über den iOS App Store vertrieben werden kann." #: ../../using/ios.rst:27 -#, fuzzy msgid "" "If you're looking to experiment for the first time with writing an iOS app " "in Python, projects such as `BeeWare `__, `Kivy " @@ -85,11 +84,12 @@ msgid "" "with the Python code itself." msgstr "" "Wenn du zum ersten Mal damit experimentieren möchtest, eine iOS-App in " -"Python zu schreiben, bieten dir Projekte wie `BeeWare `__ und `Kivy `__ eine deutlich zugänglichere " -"Nutzererfahrung. Diese Projekte übernehmen die Komplexität, die mit dem Zum-" -"Laufen-Bringen eines iOS-Projekts verbunden ist, sodass du dich nur um den " -"eigentlichen Python-Code kümmern musst." +"Python zu schreiben, bieten dir Projekte wie `BeeWare " +"`__, `Kivy `__ und `Flet " +"`__ eine deutlich zugänglichere Nutzererfahrung. Diese " +"Projekte übernehmen die Komplexität, die mit dem Zum-Laufen-Bringen eines " +"iOS-Projekts verbunden ist, sodass du dich nur um den eigentlichen " +"Python-Code kümmern musst." #: ../../using/ios.rst:35 msgid "Python at runtime on iOS" diff --git a/using/windows.po b/using/windows.po index b7f4979d..66e3f453 100644 --- a/using/windows.po +++ b/using/windows.po @@ -667,7 +667,6 @@ msgstr "" "vorhandene Installation entfernt, um sie durch die angegebene zu ersetzen." #: ../../using/windows.rst:303 -#, fuzzy msgid "" "Passing ``--update`` will replace existing installs if the new version is " "newer. Otherwise, they will be left. If no tags are provided with ``--" @@ -678,11 +677,13 @@ msgid "" "unaffected." msgstr "" "Mit ``--update`` werden vorhandene Installationen ersetzt, sofern die neue " -"Version neuer ist. Andernfalls bleiben sie unverändert. Werden zu ``--" -"update`` keine Tags angegeben, werden alle vom Python Install Manager " -"verwalteten Installationen aktualisiert, für die neuere Versionen vorliegen. " -"Aktualisierungen entfernen alle Änderungen an der Installation, auch global " -"installierte Pakete. Virtuelle Umgebungen funktionieren jedoch weiter." +"Version neuer ist. Andernfalls bleiben sie unverändert. Werden zu " +"``--update`` keine Tags angegeben, werden alle vom Python Install Manager " +"verwalteten Installationen aktualisiert, für die neuere Versionen " +"vorliegen. Aktualisierungen entfernen alle Änderungen an der Installation, " +"auch global installierte Pakete, lassen aber die Verzeichnisse " +"``site-packages`` und ``Scripts`` unverändert. Virtuelle Umgebungen sind " +"ebenfalls nicht betroffen." #: ../../using/windows.rst:310 msgid "" diff --git a/whatsnew/3.10.po b/whatsnew/3.10.po index abdcf316..4f204f8d 100644 --- a/whatsnew/3.10.po +++ b/whatsnew/3.10.po @@ -3702,9 +3702,8 @@ msgid "``threading.Thread.setName`` => :attr:`threading.Thread.name`" msgstr "``threading.Thread.setName`` => :attr:`threading.Thread.name`" #: ../../whatsnew/3.10.rst:1745 -#, fuzzy msgid "``threading.Thread.getName`` => :attr:`threading.Thread.name`" -msgstr "``threading.thread.getName`` => :attr:`threading.Thread.name`" +msgstr "``threading.Thread.getName`` => :attr:`threading.Thread.name`" #: ../../whatsnew/3.10.rst:1747 msgid "``threading.Thread.isDaemon`` => :attr:`threading.Thread.daemon`" diff --git a/whatsnew/3.12.po b/whatsnew/3.12.po index b14852cc..3e4676b5 100644 --- a/whatsnew/3.12.po +++ b/whatsnew/3.12.po @@ -6014,11 +6014,12 @@ msgstr "" "Unsterblichkeit hat." #: ../../whatsnew/3.12.rst:1998 -#, fuzzy msgid "" "``PyObject_HEAD_INIT`` This will now initialize reference count to " "``_Py_IMMORTAL_REFCNT`` when used with ``Py_BUILD_CORE``." -msgstr "``PyObject_HEAD_INIT`` setzt den Referenzzähler jetzt auf" +msgstr "" +"``PyObject_HEAD_INIT`` setzt den Referenzzähler jetzt auf " +"``_Py_IMMORTAL_REFCNT``, wenn es mit ``Py_BUILD_CORE`` verwendet wird." #: ../../whatsnew/3.12.rst:2000 #, fuzzy @@ -6030,24 +6031,23 @@ msgstr "" "Objekte," #: ../../whatsnew/3.12.rst:2002 -#, fuzzy msgid "" "``SSTATE_INTERNED_IMMORTAL_STATIC`` An identifier for interned unicode " "objects that are immortal and static" msgstr "" -"``SSTATE_INTERNED_IMMORTAL`` eine Kennzeichnung für internierte Unicode-" -"Objekte," +"``SSTATE_INTERNED_IMMORTAL_STATIC`` eine Kennzeichnung für internierte " +"Unicode-Objekte, die unsterblich und statisch sind" #: ../../whatsnew/3.12.rst:2004 -#, fuzzy msgid "" "``sys.getunicodeinternedsize`` This returns the total number of unicode " "objects that have been interned. This is now needed for :file:`refleak.py` " "to correctly track reference counts and allocated blocks" msgstr "" -"zurück, die interniert wurden. Das wird jetzt gebraucht, " -"damit :file:`refleak.py` Referenzzähler und angeforderte Speicherblöcke " -"richtig verfolgen kann" +"``sys.getunicodeinternedsize`` gibt die Gesamtzahl der Unicode-Objekte " +"zurück, die interniert wurden. Das wird jetzt gebraucht, damit " +":file:`refleak.py` Referenzzähler und angeforderte Speicherblöcke richtig " +"verfolgen kann" #: ../../whatsnew/3.12.rst:2008 msgid "(Contributed by Eddie Elizondo in :gh:`84436`.)" diff --git a/whatsnew/3.13.po b/whatsnew/3.13.po index 6c9287ba..5fc05c6e 100644 --- a/whatsnew/3.13.po +++ b/whatsnew/3.13.po @@ -7439,7 +7439,6 @@ msgstr "" "`." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:33 -#, fuzzy msgid "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: replace " "``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` " @@ -7447,12 +7446,11 @@ msgid "" "`." msgstr "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: ersetze " -"``_PyUnicodeWriter_WriteASCIIString(&writer, str)`` " -"durch :c:func:`PyUnicodeWriter_WriteASCII(writer, str) " +"``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` durch " +":c:func:`PyUnicodeWriter_WriteASCII(writer, str, size) " "`." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:36 -#, fuzzy msgid "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: replace " "``_PyUnicodeWriter_WriteLatin1String(&writer, str, size)`` by decoding the " @@ -7461,9 +7459,10 @@ msgid "" "with :c:func:`Py_DECREF`." msgstr "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: ersetze " -"``_PyUnicodeWriter_WriteLatin1String(&writer, str)`` " -"durch :c:func:`PyUnicodeWriter_WriteUTF8(writer, str) " -"`." +"``_PyUnicodeWriter_WriteLatin1String(&writer, str, size)``, indem du die " +"Zeichenkette mit :c:func:`PyUnicode_DecodeLatin1` dekodierst, das Ergebnis " +"mit :c:func:`PyUnicodeWriter_WriteStr` schreibst und es mit " +":c:func:`Py_DECREF` freigibst." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:41 msgid ":c:func:`!_PyUnicodeWriter_Prepare`: (no replacement)." diff --git a/whatsnew/3.14.po b/whatsnew/3.14.po index 02a077ca..a0c49bcc 100644 --- a/whatsnew/3.14.po +++ b/whatsnew/3.14.po @@ -813,7 +813,6 @@ msgstr "" "Funktion :func:`sys.remote_exec` umgesetzt. Zum Beispiel:" #: ../../whatsnew/3.14.rst:404 -#, fuzzy msgid "" "import os, sys\n" "from tempfile import NamedTemporaryFile\n" @@ -826,7 +825,7 @@ msgid "" "print('Behold! An offering:')\n" "sys.remote_exec(1234, script_path)" msgstr "" -"import sys\n" +"import os, sys\n" "from tempfile import NamedTemporaryFile\n" "\n" "with NamedTemporaryFile(mode='w', suffix='.py', delete=False) as f:\n" @@ -8303,7 +8302,6 @@ msgstr "" "`." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:33 -#, fuzzy msgid "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: replace " "``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` " @@ -8311,12 +8309,11 @@ msgid "" "`." msgstr "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: ersetze " -"``_PyUnicodeWriter_WriteASCIIString(&writer, str)`` " -"durch :c:func:`PyUnicodeWriter_WriteASCII(writer, str) " +"``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` durch " +":c:func:`PyUnicodeWriter_WriteASCII(writer, str, size) " "`." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:36 -#, fuzzy msgid "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: replace " "``_PyUnicodeWriter_WriteLatin1String(&writer, str, size)`` by decoding the " @@ -8325,9 +8322,10 @@ msgid "" "with :c:func:`Py_DECREF`." msgstr "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: ersetze " -"``_PyUnicodeWriter_WriteLatin1String(&writer, str)`` " -"durch :c:func:`PyUnicodeWriter_WriteUTF8(writer, str) " -"`." +"``_PyUnicodeWriter_WriteLatin1String(&writer, str, size)``, indem du die " +"Zeichenkette mit :c:func:`PyUnicode_DecodeLatin1` dekodierst, das Ergebnis " +"mit :c:func:`PyUnicodeWriter_WriteStr` schreibst und es mit " +":c:func:`Py_DECREF` freigibst." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:41 msgid ":c:func:`!_PyUnicodeWriter_Prepare`: (no replacement)." From b4a1ba5e630845f3c04f63c84cce6c5e7ae6f0f3 Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 14:18:01 +0100 Subject: [PATCH 5/9] /builtins/functions.po set missing '"' --- builtins/functions.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builtins/functions.po b/builtins/functions.po index 954cc508..6e297beb 100644 --- a/builtins/functions.po +++ b/builtins/functions.po @@ -3530,7 +3530,7 @@ msgstr "" "zusätzliche Informationen – häufig einschließlich Name und Adresse des " "Objekts – enthält. Eine Klasse kann steuern, was diese Funktion für ihre " "Instanzen zurückgibt, indem sie eine :meth:`~object.__repr__`-Methode " -"definiert. +"definiert." #: ../../builtins/functions.rst:1792 msgid "This class has a custom representation that can be evaluated::" From 73c6015f68940a16dda70928886bc9e531ba45ff Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 14:18:10 +0100 Subject: [PATCH 6/9] /builtins/functions.po set missing '"' --- c-api/typeobj-1.po | 6257 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6257 insertions(+) create mode 100644 c-api/typeobj-1.po diff --git a/c-api/typeobj-1.po b/c-api/typeobj-1.po new file mode 100644 index 00000000..a196f21d --- /dev/null +++ b/c-api/typeobj-1.po @@ -0,0 +1,6257 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2001 Python Software Foundation +# This file is distributed under the same license as the Python package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# python-doc bot, 2025 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Python 3.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-11-01 00:10+0000\n" +"PO-Revision-Date: 2026-11-01 13:00+0100\n" +"Last-Translator: python-doc bot, 2025\n" +"Language-Team: German (https://app.transifex.com/python-doc/teams/5390/de/)\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../../c-api/typeobj.rst:6 +msgid "Type Object Structures" +msgstr "Typobjekt-Strukturen" + +#: ../../c-api/typeobj.rst:8 +msgid "" +"Perhaps one of the most important structures of the Python object system is " +"the structure that defines a new type: the :c:type:`PyTypeObject` " +"structure. Type objects can be handled using any of the ``PyObject_*`` or " +"``PyType_*`` functions, but do not offer much that's interesting to most " +"Python applications. These objects are fundamental to how objects behave, so " +"they are very important to the interpreter itself and to any extension " +"module that implements new types." +msgstr "" +"Eine der wichtigsten Strukturen des Python-Objektsystems ist vielleicht die " +"Struktur, die einen neuen Typ festlegt: die Struktur :c:type:`PyTypeObject`. " +"Typobjekte lassen sich mit allen ``PyObject_*``- oder ``PyType_*``-" +"Funktionen behandeln, bieten den meisten Python-Anwendungen aber wenig " +"Interessantes. Diese Objekte sind grundlegend dafür, wie Objekte sich " +"verhalten, und deshalb für den Interpreter selbst und für jedes " +"Erweiterungsmodul, das neue Typen umsetzt, sehr wichtig." + +#: ../../c-api/typeobj.rst:16 +msgid "" +"Type objects are fairly large compared to most of the standard types. The " +"reason for the size is that each type object stores a large number of " +"values, mostly C function pointers, each of which implements a small part of " +"the type's functionality. The fields of the type object are examined in " +"detail in this section. The fields will be described in the order in which " +"they occur in the structure." +msgstr "" +"Typobjekte sind im Vergleich zu den meisten Standardtypen ziemlich groß. Der " +"Grund für die Größe ist, dass jedes Typobjekt eine große Anzahl von Werten " +"speichert, überwiegend C-Funktionszeiger, von denen jeder einen kleinen Teil " +"der Funktionalität des Typs umsetzt. Die Felder des Typobjekts werden in " +"diesem Abschnitt im Einzelnen untersucht. Sie werden in der Reihenfolge " +"beschrieben, in der sie in der Struktur vorkommen." + +#: ../../c-api/typeobj.rst:23 +msgid "" +"In addition to the following quick reference, the :ref:`typedef-examples` " +"section provides at-a-glance insight into the meaning and use " +"of :c:type:`PyTypeObject`." +msgstr "" +"Zusätzlich zur folgenden Kurzübersicht bietet der Abschnitt :ref:`typedef-" +"examples` einen schnellen Einblick in Bedeutung und Verwendung " +"von :c:type:`PyTypeObject`." + +#: ../../c-api/typeobj.rst:29 +msgid "Quick Reference" +msgstr "Kurzübersicht" + +#: ../../c-api/typeobj.rst:34 +msgid "\"tp slots\"" +msgstr "„tp-Slots“" + +#: ../../c-api/typeobj.rst:40 +msgid "PyTypeObject Slot [#slots]_" +msgstr "PyTypeObject-Slot [#slots]_" + +#: ../../c-api/typeobj.rst:40 ../../c-api/typeobj.rst:201 +msgid ":ref:`Type `" +msgstr ":ref:`Typ `" + +#: ../../c-api/typeobj.rst:40 +msgid "special methods/attrs" +msgstr "Spezialmethoden/-attribute" + +#: ../../c-api/typeobj.rst:40 +msgid "Info [#cols]_" +msgstr "Info [#cols]_" + +#: ../../c-api/typeobj.rst:42 +msgid "O" +msgstr "O" + +#: ../../c-api/typeobj.rst:42 +msgid "T" +msgstr "T" + +#: ../../c-api/typeobj.rst:42 +msgid "D" +msgstr "D" + +#: ../../c-api/typeobj.rst:42 +msgid "I" +msgstr "I" + +#: ../../c-api/typeobj.rst:44 +msgid " :c:member:`~PyTypeObject.tp_name`" +msgstr " :c:member:`~PyTypeObject.tp_name`" + +#: ../../c-api/typeobj.rst:44 ../../c-api/typeobj.rst:86 +#: ../../c-api/typeobj.rst:372 ../../c-api/typeobj.rst:377 +msgid "const char *" +msgstr "const char *" + +#: ../../c-api/typeobj.rst:44 +msgid "__name__" +msgstr "__name__" + +#: ../../c-api/typeobj.rst:44 ../../c-api/typeobj.rst:46 +#: ../../c-api/typeobj.rst:48 ../../c-api/typeobj.rst:50 +#: ../../c-api/typeobj.rst:52 ../../c-api/typeobj.rst:62 +#: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:72 +#: ../../c-api/typeobj.rst:74 ../../c-api/typeobj.rst:76 +#: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:84 +#: ../../c-api/typeobj.rst:86 ../../c-api/typeobj.rst:88 +#: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:92 +#: ../../c-api/typeobj.rst:99 ../../c-api/typeobj.rst:101 +#: ../../c-api/typeobj.rst:103 ../../c-api/typeobj.rst:105 +#: ../../c-api/typeobj.rst:107 ../../c-api/typeobj.rst:109 +#: ../../c-api/typeobj.rst:111 ../../c-api/typeobj.rst:115 +#: ../../c-api/typeobj.rst:117 ../../c-api/typeobj.rst:120 +#: ../../c-api/typeobj.rst:122 ../../c-api/typeobj.rst:124 +#: ../../c-api/typeobj.rst:126 ../../c-api/typeobj.rst:128 +#: ../../c-api/typeobj.rst:130 ../../c-api/typeobj.rst:146 +msgid "X" +msgstr "X" + +#: ../../c-api/typeobj.rst:46 +msgid ":c:member:`~PyTypeObject.tp_basicsize`" +msgstr ":c:member:`~PyTypeObject.tp_basicsize`" + +#: ../../c-api/typeobj.rst:46 ../../c-api/typeobj.rst:48 +#: ../../c-api/typeobj.rst:52 ../../c-api/typeobj.rst:99 +#: ../../c-api/typeobj.rst:120 ../../c-api/typeobj.rst:343 +#: ../../c-api/typeobj.rst:417 ../../c-api/typeobj.rst:448 +#: ../../c-api/typeobj.rst:453 +msgid ":c:type:`Py_ssize_t`" +msgstr ":c:type:`Py_ssize_t`" + +#: ../../c-api/typeobj.rst:48 +msgid ":c:member:`~PyTypeObject.tp_itemsize`" +msgstr ":c:member:`~PyTypeObject.tp_itemsize`" + +#: ../../c-api/typeobj.rst:50 +msgid ":c:member:`~PyTypeObject.tp_dealloc`" +msgstr ":c:member:`~PyTypeObject.tp_dealloc`" + +#: ../../c-api/typeobj.rst:50 ../../c-api/typeobj.rst:142 +#: ../../c-api/typeobj.rst:146 ../../c-api/typeobj.rst:347 +msgid ":c:type:`destructor`" +msgstr ":c:type:`destructor`" + +#: ../../c-api/typeobj.rst:52 +msgid ":c:member:`~PyTypeObject.tp_vectorcall_offset`" +msgstr ":c:member:`~PyTypeObject.tp_vectorcall_offset`" + +#: ../../c-api/typeobj.rst:54 +msgid "(:c:member:`~PyTypeObject.tp_getattr`)" +msgstr "(:c:member:`~PyTypeObject.tp_getattr`)" + +#: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:371 +msgid ":c:type:`getattrfunc`" +msgstr ":c:type:`getattrfunc`" + +#: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:76 +msgid "__getattribute__, __getattr__" +msgstr "__getattribute__, __getattr__" + +#: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:57 +#: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:76 +#: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:88 +#: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:92 +msgid "G" +msgstr "G" + +#: ../../c-api/typeobj.rst:57 +msgid "(:c:member:`~PyTypeObject.tp_setattr`)" +msgstr "(:c:member:`~PyTypeObject.tp_setattr`)" + +#: ../../c-api/typeobj.rst:57 ../../c-api/typeobj.rst:376 +msgid ":c:type:`setattrfunc`" +msgstr ":c:type:`setattrfunc`" + +#: ../../c-api/typeobj.rst:57 ../../c-api/typeobj.rst:79 +msgid "__setattr__, __delattr__" +msgstr "__setattr__, __delattr__" + +#: ../../c-api/typeobj.rst:60 +msgid ":c:member:`~PyTypeObject.tp_as_async`" +msgstr ":c:member:`~PyTypeObject.tp_as_async`" + +#: ../../c-api/typeobj.rst:60 +msgid ":c:type:`PyAsyncMethods` *" +msgstr ":c:type:`PyAsyncMethods` *" + +#: ../../c-api/typeobj.rst:60 ../../c-api/typeobj.rst:64 +#: ../../c-api/typeobj.rst:66 ../../c-api/typeobj.rst:68 +#: ../../c-api/typeobj.rst:82 +msgid ":ref:`sub-slots`" +msgstr ":ref:`sub-slots`" + +#: ../../c-api/typeobj.rst:60 ../../c-api/typeobj.rst:64 +#: ../../c-api/typeobj.rst:66 ../../c-api/typeobj.rst:68 +#: ../../c-api/typeobj.rst:82 +msgid "%" +msgstr "%" + +#: ../../c-api/typeobj.rst:62 +msgid ":c:member:`~PyTypeObject.tp_repr`" +msgstr ":c:member:`~PyTypeObject.tp_repr`" + +#: ../../c-api/typeobj.rst:62 ../../c-api/typeobj.rst:74 +#: ../../c-api/typeobj.rst:369 +msgid ":c:type:`reprfunc`" +msgstr ":c:type:`reprfunc`" + +#: ../../c-api/typeobj.rst:62 +msgid "__repr__" +msgstr "__repr__" + +#: ../../c-api/typeobj.rst:64 +msgid ":c:member:`~PyTypeObject.tp_as_number`" +msgstr ":c:member:`~PyTypeObject.tp_as_number`" + +#: ../../c-api/typeobj.rst:64 +msgid ":c:type:`PyNumberMethods` *" +msgstr ":c:type:`PyNumberMethods` *" + +#: ../../c-api/typeobj.rst:66 +msgid ":c:member:`~PyTypeObject.tp_as_sequence`" +msgstr ":c:member:`~PyTypeObject.tp_as_sequence`" + +#: ../../c-api/typeobj.rst:66 +msgid ":c:type:`PySequenceMethods` *" +msgstr ":c:type:`PySequenceMethods` *" + +#: ../../c-api/typeobj.rst:68 +msgid ":c:member:`~PyTypeObject.tp_as_mapping`" +msgstr ":c:member:`~PyTypeObject.tp_as_mapping`" + +#: ../../c-api/typeobj.rst:68 +msgid ":c:type:`PyMappingMethods` *" +msgstr ":c:type:`PyMappingMethods` *" + +#: ../../c-api/typeobj.rst:70 +msgid ":c:member:`~PyTypeObject.tp_hash`" +msgstr ":c:member:`~PyTypeObject.tp_hash`" + +#: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:405 +msgid ":c:type:`hashfunc`" +msgstr ":c:type:`hashfunc`" + +#: ../../c-api/typeobj.rst:70 +msgid "__hash__" +msgstr "__hash__" + +#: ../../c-api/typeobj.rst:72 +msgid ":c:member:`~PyTypeObject.tp_call`" +msgstr ":c:member:`~PyTypeObject.tp_call`" + +#: ../../c-api/typeobj.rst:72 ../../c-api/typeobj.rst:237 +#: ../../c-api/typeobj.rst:240 ../../c-api/typeobj.rst:441 +msgid ":c:type:`ternaryfunc`" +msgstr ":c:type:`ternaryfunc`" + +#: ../../c-api/typeobj.rst:72 +msgid "__call__" +msgstr "__call__" + +#: ../../c-api/typeobj.rst:74 +msgid ":c:member:`~PyTypeObject.tp_str`" +msgstr ":c:member:`~PyTypeObject.tp_str`" + +#: ../../c-api/typeobj.rst:74 +msgid "__str__" +msgstr "__str__" + +#: ../../c-api/typeobj.rst:76 +msgid ":c:member:`~PyTypeObject.tp_getattro`" +msgstr ":c:member:`~PyTypeObject.tp_getattro`" + +#: ../../c-api/typeobj.rst:76 ../../c-api/typeobj.rst:382 +msgid ":c:type:`getattrofunc`" +msgstr ":c:type:`getattrofunc`" + +#: ../../c-api/typeobj.rst:79 +msgid ":c:member:`~PyTypeObject.tp_setattro`" +msgstr ":c:member:`~PyTypeObject.tp_setattro`" + +#: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:387 +msgid ":c:type:`setattrofunc`" +msgstr ":c:type:`setattrofunc`" + +#: ../../c-api/typeobj.rst:82 +msgid ":c:member:`~PyTypeObject.tp_as_buffer`" +msgstr ":c:member:`~PyTypeObject.tp_as_buffer`" + +#: ../../c-api/typeobj.rst:82 +msgid ":c:type:`PyBufferProcs` *" +msgstr ":c:type:`PyBufferProcs` *" + +#: ../../c-api/typeobj.rst:84 +msgid ":c:member:`~PyTypeObject.tp_flags`" +msgstr ":c:member:`~PyTypeObject.tp_flags`" + +#: ../../c-api/typeobj.rst:84 +msgid "unsigned long" +msgstr "unsigned long" + +#: ../../c-api/typeobj.rst:84 ../../c-api/typeobj.rst:99 +#: ../../c-api/typeobj.rst:113 ../../c-api/typeobj.rst:120 +#: ../../c-api/typeobj.rst:124 ../../c-api/typeobj.rst:126 +#: ../../c-api/typeobj.rst:128 +msgid "?" +msgstr "?" + +#: ../../c-api/typeobj.rst:86 +msgid ":c:member:`~PyTypeObject.tp_doc`" +msgstr ":c:member:`~PyTypeObject.tp_doc`" + +#: ../../c-api/typeobj.rst:86 +msgid "__doc__" +msgstr "__doc__" + +#: ../../c-api/typeobj.rst:88 +msgid ":c:member:`~PyTypeObject.tp_traverse`" +msgstr ":c:member:`~PyTypeObject.tp_traverse`" + +#: ../../c-api/typeobj.rst:88 ../../c-api/typeobj.rst:351 +msgid ":c:type:`traverseproc`" +msgstr ":c:type:`traverseproc`" + +#: ../../c-api/typeobj.rst:90 +msgid ":c:member:`~PyTypeObject.tp_clear`" +msgstr ":c:member:`~PyTypeObject.tp_clear`" + +#: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:130 +#: ../../c-api/typeobj.rst:248 ../../c-api/typeobj.rst:430 +msgid ":c:type:`inquiry`" +msgstr ":c:type:`inquiry`" + +#: ../../c-api/typeobj.rst:92 +msgid ":c:member:`~PyTypeObject.tp_richcompare`" +msgstr ":c:member:`~PyTypeObject.tp_richcompare`" + +#: ../../c-api/typeobj.rst:92 ../../c-api/typeobj.rst:407 +msgid ":c:type:`richcmpfunc`" +msgstr ":c:type:`richcmpfunc`" + +#: ../../c-api/typeobj.rst:92 +msgid "__lt__, __le__, __eq__, __ne__, __gt__, __ge__" +msgstr "__lt__, __le__, __eq__, __ne__, __gt__, __ge__" + +#: ../../c-api/typeobj.rst:99 +msgid "(:c:member:`~PyTypeObject.tp_weaklistoffset`)" +msgstr "(:c:member:`~PyTypeObject.tp_weaklistoffset`)" + +#: ../../c-api/typeobj.rst:101 +msgid ":c:member:`~PyTypeObject.tp_iter`" +msgstr ":c:member:`~PyTypeObject.tp_iter`" + +#: ../../c-api/typeobj.rst:101 ../../c-api/typeobj.rst:413 +msgid ":c:type:`getiterfunc`" +msgstr ":c:type:`getiterfunc`" + +#: ../../c-api/typeobj.rst:101 +msgid "__iter__" +msgstr "__iter__" + +#: ../../c-api/typeobj.rst:103 +msgid ":c:member:`~PyTypeObject.tp_iternext`" +msgstr ":c:member:`~PyTypeObject.tp_iternext`" + +#: ../../c-api/typeobj.rst:103 ../../c-api/typeobj.rst:415 +msgid ":c:type:`iternextfunc`" +msgstr ":c:type:`iternextfunc`" + +#: ../../c-api/typeobj.rst:103 +msgid "__next__" +msgstr "__next__" + +#: ../../c-api/typeobj.rst:105 +msgid ":c:member:`~PyTypeObject.tp_methods`" +msgstr ":c:member:`~PyTypeObject.tp_methods`" + +#: ../../c-api/typeobj.rst:105 +msgid ":c:type:`PyMethodDef` []" +msgstr ":c:type:`PyMethodDef` []" + +#: ../../c-api/typeobj.rst:107 +msgid ":c:member:`~PyTypeObject.tp_members`" +msgstr ":c:member:`~PyTypeObject.tp_members`" + +#: ../../c-api/typeobj.rst:107 +msgid ":c:type:`PyMemberDef` []" +msgstr ":c:type:`PyMemberDef` []" + +#: ../../c-api/typeobj.rst:109 +msgid ":c:member:`~PyTypeObject.tp_getset`" +msgstr ":c:member:`~PyTypeObject.tp_getset`" + +#: ../../c-api/typeobj.rst:109 +msgid ":c:type:`PyGetSetDef` []" +msgstr ":c:type:`PyGetSetDef` []" + +#: ../../c-api/typeobj.rst:111 +msgid ":c:member:`~PyTypeObject.tp_base`" +msgstr ":c:member:`~PyTypeObject.tp_base`" + +#: ../../c-api/typeobj.rst:111 ../../c-api/typeobj.rst:342 +#: ../../c-api/typeobj.rst:357 +msgid ":c:type:`PyTypeObject` *" +msgstr ":c:type:`PyTypeObject` *" + +#: ../../c-api/typeobj.rst:111 +msgid "__base__" +msgstr "__base__" + +#: ../../c-api/typeobj.rst:113 +msgid ":c:member:`~PyTypeObject.tp_dict`" +msgstr ":c:member:`~PyTypeObject.tp_dict`" + +#: ../../c-api/typeobj.rst:113 ../../c-api/typeobj.rst:132 +#: ../../c-api/typeobj.rst:134 ../../c-api/typeobj.rst:136 +#: ../../c-api/typeobj.rst:140 ../../c-api/typeobj.rst:342 +#: ../../c-api/typeobj.rst:347 ../../c-api/typeobj.rst:351 +#: ../../c-api/typeobj.rst:357 ../../c-api/typeobj.rst:358 +#: ../../c-api/typeobj.rst:359 ../../c-api/typeobj.rst:363 +#: ../../c-api/typeobj.rst:364 ../../c-api/typeobj.rst:365 +#: ../../c-api/typeobj.rst:369 ../../c-api/typeobj.rst:371 +#: ../../c-api/typeobj.rst:376 ../../c-api/typeobj.rst:378 +#: ../../c-api/typeobj.rst:382 ../../c-api/typeobj.rst:383 +#: ../../c-api/typeobj.rst:387 ../../c-api/typeobj.rst:388 +#: ../../c-api/typeobj.rst:389 ../../c-api/typeobj.rst:393 +#: ../../c-api/typeobj.rst:394 ../../c-api/typeobj.rst:395 +#: ../../c-api/typeobj.rst:399 ../../c-api/typeobj.rst:400 +#: ../../c-api/typeobj.rst:401 ../../c-api/typeobj.rst:405 +#: ../../c-api/typeobj.rst:407 ../../c-api/typeobj.rst:408 +#: ../../c-api/typeobj.rst:413 ../../c-api/typeobj.rst:415 +#: ../../c-api/typeobj.rst:417 ../../c-api/typeobj.rst:419 +#: ../../c-api/typeobj.rst:425 ../../c-api/typeobj.rst:430 +#: ../../c-api/typeobj.rst:432 ../../c-api/typeobj.rst:436 +#: ../../c-api/typeobj.rst:437 ../../c-api/typeobj.rst:441 +#: ../../c-api/typeobj.rst:442 ../../c-api/typeobj.rst:443 +#: ../../c-api/typeobj.rst:447 ../../c-api/typeobj.rst:452 +#: ../../c-api/typeobj.rst:454 ../../c-api/typeobj.rst:458 +#: ../../c-api/typeobj.rst:459 ../../c-api/typeobj.rst:463 +#: ../../c-api/typeobj.rst:464 ../../c-api/typeobj.rst:465 +msgid ":c:type:`PyObject` *" +msgstr ":c:type:`PyObject` *" + +#: ../../c-api/typeobj.rst:113 +msgid "__dict__" +msgstr "__dict__" + +#: ../../c-api/typeobj.rst:115 +msgid ":c:member:`~PyTypeObject.tp_descr_get`" +msgstr ":c:member:`~PyTypeObject.tp_descr_get`" + +#: ../../c-api/typeobj.rst:115 ../../c-api/typeobj.rst:393 +msgid ":c:type:`descrgetfunc`" +msgstr ":c:type:`descrgetfunc`" + +#: ../../c-api/typeobj.rst:115 +msgid "__get__" +msgstr "__get__" + +#: ../../c-api/typeobj.rst:117 +msgid ":c:member:`~PyTypeObject.tp_descr_set`" +msgstr ":c:member:`~PyTypeObject.tp_descr_set`" + +#: ../../c-api/typeobj.rst:117 ../../c-api/typeobj.rst:399 +msgid ":c:type:`descrsetfunc`" +msgstr ":c:type:`descrsetfunc`" + +#: ../../c-api/typeobj.rst:117 +msgid "__set__, __delete__" +msgstr "__set__, __delete__" + +#: ../../c-api/typeobj.rst:120 +msgid "(:c:member:`~PyTypeObject.tp_dictoffset`)" +msgstr "(:c:member:`~PyTypeObject.tp_dictoffset`)" + +#: ../../c-api/typeobj.rst:122 +msgid ":c:member:`~PyTypeObject.tp_init`" +msgstr ":c:member:`~PyTypeObject.tp_init`" + +#: ../../c-api/typeobj.rst:122 ../../c-api/typeobj.rst:363 +msgid ":c:type:`initproc`" +msgstr ":c:type:`initproc`" + +#: ../../c-api/typeobj.rst:122 +msgid "__init__" +msgstr "__init__" + +#: ../../c-api/typeobj.rst:124 +msgid ":c:member:`~PyTypeObject.tp_alloc`" +msgstr ":c:member:`~PyTypeObject.tp_alloc`" + +#: ../../c-api/typeobj.rst:124 ../../c-api/typeobj.rst:342 +msgid ":c:type:`allocfunc`" +msgstr ":c:type:`allocfunc`" + +#: ../../c-api/typeobj.rst:126 +msgid ":c:member:`~PyTypeObject.tp_new`" +msgstr ":c:member:`~PyTypeObject.tp_new`" + +#: ../../c-api/typeobj.rst:126 ../../c-api/typeobj.rst:357 +msgid ":c:type:`newfunc`" +msgstr ":c:type:`newfunc`" + +#: ../../c-api/typeobj.rst:126 +msgid "__new__" +msgstr "__new__" + +#: ../../c-api/typeobj.rst:128 +msgid ":c:member:`~PyTypeObject.tp_free`" +msgstr ":c:member:`~PyTypeObject.tp_free`" + +#: ../../c-api/typeobj.rst:128 ../../c-api/typeobj.rst:349 +msgid ":c:type:`freefunc`" +msgstr ":c:type:`freefunc`" + +#: ../../c-api/typeobj.rst:130 +msgid ":c:member:`~PyTypeObject.tp_is_gc`" +msgstr ":c:member:`~PyTypeObject.tp_is_gc`" + +#: ../../c-api/typeobj.rst:132 +msgid "<:c:member:`~PyTypeObject.tp_bases`>" +msgstr "<:c:member:`~PyTypeObject.tp_bases`>" + +#: ../../c-api/typeobj.rst:132 +msgid "__bases__" +msgstr "__bases__" + +#: ../../c-api/typeobj.rst:132 ../../c-api/typeobj.rst:134 +msgid "~" +msgstr "~" + +#: ../../c-api/typeobj.rst:134 +msgid "<:c:member:`~PyTypeObject.tp_mro`>" +msgstr "<:c:member:`~PyTypeObject.tp_mro`>" + +#: ../../c-api/typeobj.rst:134 +msgid "__mro__" +msgstr "__mro__" + +#: ../../c-api/typeobj.rst:136 +msgid "[:c:member:`~PyTypeObject.tp_cache`]" +msgstr "[:c:member:`~PyTypeObject.tp_cache`]" + +#: ../../c-api/typeobj.rst:138 +msgid "[:c:member:`~PyTypeObject.tp_subclasses`]" +msgstr "[:c:member:`~PyTypeObject.tp_subclasses`]" + +#: ../../c-api/typeobj.rst:138 ../../c-api/typeobj.rst:279 +#: ../../c-api/typeobj.rst:349 ../../c-api/typeobj.rst:353 +msgid "void *" +msgstr "void *" + +#: ../../c-api/typeobj.rst:138 +msgid "__subclasses__" +msgstr "__subclasses__" + +#: ../../c-api/typeobj.rst:140 +msgid "[:c:member:`~PyTypeObject.tp_weaklist`]" +msgstr "[:c:member:`~PyTypeObject.tp_weaklist`]" + +#: ../../c-api/typeobj.rst:142 +msgid "(:c:member:`~PyTypeObject.tp_del`)" +msgstr "(:c:member:`~PyTypeObject.tp_del`)" + +#: ../../c-api/typeobj.rst:144 +msgid "[:c:member:`~PyTypeObject.tp_version_tag`]" +msgstr "[:c:member:`~PyTypeObject.tp_version_tag`]" + +#: ../../c-api/typeobj.rst:144 +msgid "unsigned int" +msgstr "unsigned int" + +#: ../../c-api/typeobj.rst:146 +msgid ":c:member:`~PyTypeObject.tp_finalize`" +msgstr ":c:member:`~PyTypeObject.tp_finalize`" + +#: ../../c-api/typeobj.rst:146 +msgid "__del__" +msgstr "__del__" + +#: ../../c-api/typeobj.rst:148 +msgid ":c:member:`~PyTypeObject.tp_vectorcall`" +msgstr ":c:member:`~PyTypeObject.tp_vectorcall`" + +#: ../../c-api/typeobj.rst:148 +msgid ":c:type:`vectorcallfunc`" +msgstr ":c:type:`vectorcallfunc`" + +#: ../../c-api/typeobj.rst:150 +msgid "[:c:member:`~PyTypeObject.tp_watched`]" +msgstr "[:c:member:`~PyTypeObject.tp_watched`]" + +#: ../../c-api/typeobj.rst:150 +msgid "unsigned char" +msgstr "unsigned char" + +#: ../../c-api/typeobj.rst:155 +msgid "" +"**()**: A slot name in parentheses indicates it is (effectively) deprecated." +msgstr "" +"**()**: Ein Slot-Name in Klammern bedeutet, dass er (praktisch) veraltet ist." + +#: ../../c-api/typeobj.rst:157 +msgid "" +"**<>**: Names in angle brackets should be initially set to ``NULL`` and " +"treated as read-only." +msgstr "" +"**<>**: Namen in spitzen Klammern sollten anfangs auf ``NULL`` gesetzt und " +"als nur lesbar behandelt werden." + +#: ../../c-api/typeobj.rst:160 +msgid "**[]**: Names in square brackets are for internal use only." +msgstr "**[]**: Namen in eckigen Klammern sind nur für den internen Gebrauch." + +#: ../../c-api/typeobj.rst:162 +msgid "" +"**** (as a prefix) means the field is required (must be non-``NULL``)." +msgstr "" +"**** (als Präfix) bedeutet, dass das Feld erforderlich ist (darf nicht " +"``NULL`` sein)." + +#: ../../c-api/typeobj.rst:164 +msgid "Columns:" +msgstr "Spalten:" + +#: ../../c-api/typeobj.rst:166 +msgid "**\"O\"**: set on :c:data:`PyBaseObject_Type`" +msgstr "**\"O\"**: an :c:data:`PyBaseObject_Type` gesetzt" + +#: ../../c-api/typeobj.rst:168 +msgid "**\"T\"**: set on :c:data:`PyType_Type`" +msgstr "**\"T\"**: an :c:data:`PyType_Type` gesetzt" + +#: ../../c-api/typeobj.rst:170 +msgid "**\"D\"**: default (if slot is set to ``NULL``)" +msgstr "**\"D\"**: Vorgabe (wenn der Slot auf ``NULL`` gesetzt ist)" + +#: ../../c-api/typeobj.rst:172 +msgid "" +"X - PyType_Ready sets this value if it is NULL\n" +"~ - PyType_Ready always sets this value (it should be NULL)\n" +"? - PyType_Ready may set this value depending on other slots\n" +"\n" +"Also see the inheritance column (\"I\")." +msgstr "" +"X - PyType_Ready setzt diesen Wert, wenn er NULL ist\n" +"~ - PyType_Ready setzt diesen Wert immer (er sollte NULL sein)\n" +"? - PyType_Ready setzt diesen Wert je nach anderen Slots\n" +"\n" +"Siehe auch die Vererbungsspalte (\"I\")." + +#: ../../c-api/typeobj.rst:180 +msgid "**\"I\"**: inheritance" +msgstr "**\"I\"**: Vererbung" + +#: ../../c-api/typeobj.rst:182 +msgid "" +"X - type slot is inherited via *PyType_Ready* if defined with a *NULL* " +"value\n" +"% - the slots of the sub-struct are inherited individually\n" +"G - inherited, but only in combination with other slots; see the slot's " +"description\n" +"? - it's complicated; see the slot's description" +msgstr "" +"X - Typ-Slot wird über *PyType_Ready* vererbt, wenn er mit einem *NULL*-Wert " +"festgelegt ist\n" +"% - die Slots der Unterstruktur werden einzeln vererbt\n" +"G - vererbt, aber nur in Verbindung mit anderen Slots -- siehe die " +"Beschreibung des Slots\n" +"? - es ist kompliziert -- siehe die Beschreibung des Slots" + +#: ../../c-api/typeobj.rst:189 +msgid "" +"Note that some slots are effectively inherited through the normal attribute " +"lookup chain." +msgstr "" +"Beachte, dass manche Slots praktisch über die normale Kette der " +"Attributsuche vererbt werden." + +#: ../../c-api/typeobj.rst:195 +msgid "sub-slots" +msgstr "Unter-Slots" + +#: ../../c-api/typeobj.rst:201 +msgid "Slot" +msgstr "Slot" + +#: ../../c-api/typeobj.rst:201 +msgid "special methods" +msgstr "Spezialmethoden" + +#: ../../c-api/typeobj.rst:204 +msgid ":c:member:`~PyAsyncMethods.am_await`" +msgstr ":c:member:`~PyAsyncMethods.am_await`" + +#: ../../c-api/typeobj.rst:204 ../../c-api/typeobj.rst:206 +#: ../../c-api/typeobj.rst:208 ../../c-api/typeobj.rst:242 +#: ../../c-api/typeobj.rst:244 ../../c-api/typeobj.rst:246 +#: ../../c-api/typeobj.rst:250 ../../c-api/typeobj.rst:277 +#: ../../c-api/typeobj.rst:281 ../../c-api/typeobj.rst:291 +#: ../../c-api/typeobj.rst:432 +msgid ":c:type:`unaryfunc`" +msgstr ":c:type:`unaryfunc`" + +#: ../../c-api/typeobj.rst:204 +msgid "__await__" +msgstr "__await__" + +#: ../../c-api/typeobj.rst:206 +msgid ":c:member:`~PyAsyncMethods.am_aiter`" +msgstr ":c:member:`~PyAsyncMethods.am_aiter`" + +#: ../../c-api/typeobj.rst:206 +msgid "__aiter__" +msgstr "__aiter__" + +#: ../../c-api/typeobj.rst:208 +msgid ":c:member:`~PyAsyncMethods.am_anext`" +msgstr ":c:member:`~PyAsyncMethods.am_anext`" + +#: ../../c-api/typeobj.rst:208 +msgid "__anext__" +msgstr "__anext__" + +#: ../../c-api/typeobj.rst:210 +msgid ":c:member:`~PyAsyncMethods.am_send`" +msgstr ":c:member:`~PyAsyncMethods.am_send`" + +#: ../../c-api/typeobj.rst:210 +msgid ":c:type:`sendfunc`" +msgstr ":c:type:`sendfunc`" + +#: ../../c-api/typeobj.rst:214 +msgid ":c:member:`~PyNumberMethods.nb_add`" +msgstr ":c:member:`~PyNumberMethods.nb_add`" + +#: ../../c-api/typeobj.rst:214 ../../c-api/typeobj.rst:217 +#: ../../c-api/typeobj.rst:219 ../../c-api/typeobj.rst:222 +#: ../../c-api/typeobj.rst:224 ../../c-api/typeobj.rst:227 +#: ../../c-api/typeobj.rst:229 ../../c-api/typeobj.rst:232 +#: ../../c-api/typeobj.rst:234 ../../c-api/typeobj.rst:252 +#: ../../c-api/typeobj.rst:255 ../../c-api/typeobj.rst:257 +#: ../../c-api/typeobj.rst:260 ../../c-api/typeobj.rst:262 +#: ../../c-api/typeobj.rst:265 ../../c-api/typeobj.rst:267 +#: ../../c-api/typeobj.rst:270 ../../c-api/typeobj.rst:272 +#: ../../c-api/typeobj.rst:275 ../../c-api/typeobj.rst:283 +#: ../../c-api/typeobj.rst:285 ../../c-api/typeobj.rst:287 +#: ../../c-api/typeobj.rst:289 ../../c-api/typeobj.rst:293 +#: ../../c-api/typeobj.rst:296 ../../c-api/typeobj.rst:302 +#: ../../c-api/typeobj.rst:311 ../../c-api/typeobj.rst:322 +#: ../../c-api/typeobj.rst:436 +msgid ":c:type:`binaryfunc`" +msgstr ":c:type:`binaryfunc`" + +#: ../../c-api/typeobj.rst:214 +msgid "__add__ __radd__" +msgstr "__add__ __radd__" + +#: ../../c-api/typeobj.rst:217 +msgid ":c:member:`~PyNumberMethods.nb_inplace_add`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_add`" + +#: ../../c-api/typeobj.rst:217 ../../c-api/typeobj.rst:322 +msgid "__iadd__" +msgstr "__iadd__" + +#: ../../c-api/typeobj.rst:219 +msgid ":c:member:`~PyNumberMethods.nb_subtract`" +msgstr ":c:member:`~PyNumberMethods.nb_subtract`" + +#: ../../c-api/typeobj.rst:219 +msgid "__sub__ __rsub__" +msgstr "__sub__ __rsub__" + +#: ../../c-api/typeobj.rst:222 +msgid ":c:member:`~PyNumberMethods.nb_inplace_subtract`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_subtract`" + +#: ../../c-api/typeobj.rst:222 +msgid "__isub__" +msgstr "__isub__" + +#: ../../c-api/typeobj.rst:224 +msgid ":c:member:`~PyNumberMethods.nb_multiply`" +msgstr ":c:member:`~PyNumberMethods.nb_multiply`" + +#: ../../c-api/typeobj.rst:224 +msgid "__mul__ __rmul__" +msgstr "__mul__ __rmul__" + +#: ../../c-api/typeobj.rst:227 +msgid ":c:member:`~PyNumberMethods.nb_inplace_multiply`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_multiply`" + +#: ../../c-api/typeobj.rst:227 ../../c-api/typeobj.rst:324 +msgid "__imul__" +msgstr "__imul__" + +#: ../../c-api/typeobj.rst:229 +msgid ":c:member:`~PyNumberMethods.nb_remainder`" +msgstr ":c:member:`~PyNumberMethods.nb_remainder`" + +#: ../../c-api/typeobj.rst:229 +msgid "__mod__ __rmod__" +msgstr "__mod__ __rmod__" + +#: ../../c-api/typeobj.rst:232 +msgid ":c:member:`~PyNumberMethods.nb_inplace_remainder`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_remainder`" + +#: ../../c-api/typeobj.rst:232 +msgid "__imod__" +msgstr "__imod__" + +#: ../../c-api/typeobj.rst:234 +msgid ":c:member:`~PyNumberMethods.nb_divmod`" +msgstr ":c:member:`~PyNumberMethods.nb_divmod`" + +#: ../../c-api/typeobj.rst:234 +msgid "__divmod__ __rdivmod__" +msgstr "__divmod__ __rdivmod__" + +#: ../../c-api/typeobj.rst:237 +msgid ":c:member:`~PyNumberMethods.nb_power`" +msgstr ":c:member:`~PyNumberMethods.nb_power`" + +#: ../../c-api/typeobj.rst:237 +msgid "__pow__ __rpow__" +msgstr "__pow__ __rpow__" + +#: ../../c-api/typeobj.rst:240 +msgid ":c:member:`~PyNumberMethods.nb_inplace_power`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_power`" + +#: ../../c-api/typeobj.rst:240 +msgid "__ipow__" +msgstr "__ipow__" + +#: ../../c-api/typeobj.rst:242 +msgid ":c:member:`~PyNumberMethods.nb_negative`" +msgstr ":c:member:`~PyNumberMethods.nb_negative`" + +#: ../../c-api/typeobj.rst:242 +msgid "__neg__" +msgstr "__neg__" + +#: ../../c-api/typeobj.rst:244 +msgid ":c:member:`~PyNumberMethods.nb_positive`" +msgstr ":c:member:`~PyNumberMethods.nb_positive`" + +#: ../../c-api/typeobj.rst:244 +msgid "__pos__" +msgstr "__pos__" + +#: ../../c-api/typeobj.rst:246 +msgid ":c:member:`~PyNumberMethods.nb_absolute`" +msgstr ":c:member:`~PyNumberMethods.nb_absolute`" + +#: ../../c-api/typeobj.rst:246 +msgid "__abs__" +msgstr "__abs__" + +#: ../../c-api/typeobj.rst:248 +msgid ":c:member:`~PyNumberMethods.nb_bool`" +msgstr ":c:member:`~PyNumberMethods.nb_bool`" + +#: ../../c-api/typeobj.rst:248 +msgid "__bool__" +msgstr "__bool__" + +#: ../../c-api/typeobj.rst:250 +msgid ":c:member:`~PyNumberMethods.nb_invert`" +msgstr ":c:member:`~PyNumberMethods.nb_invert`" + +#: ../../c-api/typeobj.rst:250 +msgid "__invert__" +msgstr "__invert__" + +#: ../../c-api/typeobj.rst:252 +msgid ":c:member:`~PyNumberMethods.nb_lshift`" +msgstr ":c:member:`~PyNumberMethods.nb_lshift`" + +#: ../../c-api/typeobj.rst:252 +msgid "__lshift__ __rlshift__" +msgstr "__lshift__ __rlshift__" + +#: ../../c-api/typeobj.rst:255 +msgid ":c:member:`~PyNumberMethods.nb_inplace_lshift`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_lshift`" + +#: ../../c-api/typeobj.rst:255 +msgid "__ilshift__" +msgstr "__ilshift__" + +#: ../../c-api/typeobj.rst:257 +msgid ":c:member:`~PyNumberMethods.nb_rshift`" +msgstr ":c:member:`~PyNumberMethods.nb_rshift`" + +#: ../../c-api/typeobj.rst:257 +msgid "__rshift__ __rrshift__" +msgstr "__rshift__ __rrshift__" + +#: ../../c-api/typeobj.rst:260 +msgid ":c:member:`~PyNumberMethods.nb_inplace_rshift`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_rshift`" + +#: ../../c-api/typeobj.rst:260 +msgid "__irshift__" +msgstr "__irshift__" + +#: ../../c-api/typeobj.rst:262 +msgid ":c:member:`~PyNumberMethods.nb_and`" +msgstr ":c:member:`~PyNumberMethods.nb_and`" + +#: ../../c-api/typeobj.rst:262 +msgid "__and__ __rand__" +msgstr "__and__ __rand__" + +#: ../../c-api/typeobj.rst:265 +msgid ":c:member:`~PyNumberMethods.nb_inplace_and`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_and`" + +#: ../../c-api/typeobj.rst:265 +msgid "__iand__" +msgstr "__iand__" + +#: ../../c-api/typeobj.rst:267 +msgid ":c:member:`~PyNumberMethods.nb_xor`" +msgstr ":c:member:`~PyNumberMethods.nb_xor`" + +#: ../../c-api/typeobj.rst:267 +msgid "__xor__ __rxor__" +msgstr "__xor__ __rxor__" + +#: ../../c-api/typeobj.rst:270 +msgid ":c:member:`~PyNumberMethods.nb_inplace_xor`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_xor`" + +#: ../../c-api/typeobj.rst:270 +msgid "__ixor__" +msgstr "__ixor__" + +#: ../../c-api/typeobj.rst:272 +msgid ":c:member:`~PyNumberMethods.nb_or`" +msgstr ":c:member:`~PyNumberMethods.nb_or`" + +#: ../../c-api/typeobj.rst:272 +msgid "__or__ __ror__" +msgstr "__or__ __ror__" + +#: ../../c-api/typeobj.rst:275 +msgid ":c:member:`~PyNumberMethods.nb_inplace_or`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_or`" + +#: ../../c-api/typeobj.rst:275 +msgid "__ior__" +msgstr "__ior__" + +#: ../../c-api/typeobj.rst:277 +msgid ":c:member:`~PyNumberMethods.nb_int`" +msgstr ":c:member:`~PyNumberMethods.nb_int`" + +#: ../../c-api/typeobj.rst:277 +msgid "__int__" +msgstr "__int__" + +#: ../../c-api/typeobj.rst:279 +msgid ":c:member:`~PyNumberMethods.nb_reserved`" +msgstr ":c:member:`~PyNumberMethods.nb_reserved`" + +#: ../../c-api/typeobj.rst:281 +msgid ":c:member:`~PyNumberMethods.nb_float`" +msgstr ":c:member:`~PyNumberMethods.nb_float`" + +#: ../../c-api/typeobj.rst:281 +msgid "__float__" +msgstr "__float__" + +#: ../../c-api/typeobj.rst:283 +msgid ":c:member:`~PyNumberMethods.nb_floor_divide`" +msgstr ":c:member:`~PyNumberMethods.nb_floor_divide`" + +#: ../../c-api/typeobj.rst:283 +msgid "__floordiv__" +msgstr "__floordiv__" + +#: ../../c-api/typeobj.rst:285 +msgid ":c:member:`~PyNumberMethods.nb_inplace_floor_divide`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_floor_divide`" + +#: ../../c-api/typeobj.rst:285 +msgid "__ifloordiv__" +msgstr "__ifloordiv__" + +#: ../../c-api/typeobj.rst:287 +msgid ":c:member:`~PyNumberMethods.nb_true_divide`" +msgstr ":c:member:`~PyNumberMethods.nb_true_divide`" + +#: ../../c-api/typeobj.rst:287 +msgid "__truediv__" +msgstr "__truediv__" + +#: ../../c-api/typeobj.rst:289 +msgid ":c:member:`~PyNumberMethods.nb_inplace_true_divide`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_true_divide`" + +#: ../../c-api/typeobj.rst:289 +msgid "__itruediv__" +msgstr "__itruediv__" + +#: ../../c-api/typeobj.rst:291 +msgid ":c:member:`~PyNumberMethods.nb_index`" +msgstr ":c:member:`~PyNumberMethods.nb_index`" + +#: ../../c-api/typeobj.rst:291 +msgid "__index__" +msgstr "__index__" + +#: ../../c-api/typeobj.rst:293 +msgid ":c:member:`~PyNumberMethods.nb_matrix_multiply`" +msgstr ":c:member:`~PyNumberMethods.nb_matrix_multiply`" + +#: ../../c-api/typeobj.rst:293 +msgid "__matmul__ __rmatmul__" +msgstr "__matmul__ __rmatmul__" + +#: ../../c-api/typeobj.rst:296 +msgid ":c:member:`~PyNumberMethods.nb_inplace_matrix_multiply`" +msgstr ":c:member:`~PyNumberMethods.nb_inplace_matrix_multiply`" + +#: ../../c-api/typeobj.rst:296 +msgid "__imatmul__" +msgstr "__imatmul__" + +#: ../../c-api/typeobj.rst:300 +msgid ":c:member:`~PyMappingMethods.mp_length`" +msgstr ":c:member:`~PyMappingMethods.mp_length`" + +#: ../../c-api/typeobj.rst:300 ../../c-api/typeobj.rst:309 +#: ../../c-api/typeobj.rst:417 +msgid ":c:type:`lenfunc`" +msgstr ":c:type:`lenfunc`" + +#: ../../c-api/typeobj.rst:300 ../../c-api/typeobj.rst:309 +msgid "__len__" +msgstr "__len__" + +#: ../../c-api/typeobj.rst:302 +msgid ":c:member:`~PyMappingMethods.mp_subscript`" +msgstr ":c:member:`~PyMappingMethods.mp_subscript`" + +#: ../../c-api/typeobj.rst:302 ../../c-api/typeobj.rst:315 +msgid "__getitem__" +msgstr "__getitem__" + +#: ../../c-api/typeobj.rst:304 +msgid ":c:member:`~PyMappingMethods.mp_ass_subscript`" +msgstr ":c:member:`~PyMappingMethods.mp_ass_subscript`" + +#: ../../c-api/typeobj.rst:304 ../../c-api/typeobj.rst:463 +msgid ":c:type:`objobjargproc`" +msgstr ":c:type:`objobjargproc`" + +#: ../../c-api/typeobj.rst:304 +msgid "__setitem__, __delitem__" +msgstr "__setitem__, __delitem__" + +#: ../../c-api/typeobj.rst:309 +msgid ":c:member:`~PySequenceMethods.sq_length`" +msgstr ":c:member:`~PySequenceMethods.sq_length`" + +#: ../../c-api/typeobj.rst:311 +msgid ":c:member:`~PySequenceMethods.sq_concat`" +msgstr ":c:member:`~PySequenceMethods.sq_concat`" + +#: ../../c-api/typeobj.rst:311 +msgid "__add__" +msgstr "__add__" + +#: ../../c-api/typeobj.rst:313 +msgid ":c:member:`~PySequenceMethods.sq_repeat`" +msgstr ":c:member:`~PySequenceMethods.sq_repeat`" + +#: ../../c-api/typeobj.rst:313 ../../c-api/typeobj.rst:315 +#: ../../c-api/typeobj.rst:324 ../../c-api/typeobj.rst:447 +msgid ":c:type:`ssizeargfunc`" +msgstr ":c:type:`ssizeargfunc`" + +#: ../../c-api/typeobj.rst:313 +msgid "__mul__" +msgstr "__mul__" + +#: ../../c-api/typeobj.rst:315 +msgid ":c:member:`~PySequenceMethods.sq_item`" +msgstr ":c:member:`~PySequenceMethods.sq_item`" + +#: ../../c-api/typeobj.rst:317 +msgid ":c:member:`~PySequenceMethods.sq_ass_item`" +msgstr ":c:member:`~PySequenceMethods.sq_ass_item`" + +#: ../../c-api/typeobj.rst:317 ../../c-api/typeobj.rst:452 +msgid ":c:type:`ssizeobjargproc`" +msgstr ":c:type:`ssizeobjargproc`" + +#: ../../c-api/typeobj.rst:317 +msgid "__setitem__ __delitem__" +msgstr "__setitem__ __delitem__" + +#: ../../c-api/typeobj.rst:320 +msgid ":c:member:`~PySequenceMethods.sq_contains`" +msgstr ":c:member:`~PySequenceMethods.sq_contains`" + +#: ../../c-api/typeobj.rst:320 ../../c-api/typeobj.rst:458 +msgid ":c:type:`objobjproc`" +msgstr ":c:type:`objobjproc`" + +#: ../../c-api/typeobj.rst:320 +msgid "__contains__" +msgstr "__contains__" + +#: ../../c-api/typeobj.rst:322 +msgid ":c:member:`~PySequenceMethods.sq_inplace_concat`" +msgstr ":c:member:`~PySequenceMethods.sq_inplace_concat`" + +#: ../../c-api/typeobj.rst:324 +msgid ":c:member:`~PySequenceMethods.sq_inplace_repeat`" +msgstr ":c:member:`~PySequenceMethods.sq_inplace_repeat`" + +#: ../../c-api/typeobj.rst:328 +msgid ":c:member:`~PyBufferProcs.bf_getbuffer`" +msgstr ":c:member:`~PyBufferProcs.bf_getbuffer`" + +#: ../../c-api/typeobj.rst:328 +msgid ":c:func:`getbufferproc`" +msgstr ":c:func:`getbufferproc`" + +#: ../../c-api/typeobj.rst:328 +msgid "__buffer__" +msgstr "__buffer__" + +#: ../../c-api/typeobj.rst:330 +msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`" +msgstr ":c:member:`~PyBufferProcs.bf_releasebuffer`" + +#: ../../c-api/typeobj.rst:330 +msgid ":c:func:`releasebufferproc`" +msgstr ":c:func:`releasebufferproc`" + +#: ../../c-api/typeobj.rst:330 +msgid "__release_ buffer\\__" +msgstr "__release_ buffer\\__" + +#: ../../c-api/typeobj.rst:337 +msgid "slot typedefs" +msgstr "Slot-Typedefs" + +#: ../../c-api/typeobj.rst:340 +msgid "typedef" +msgstr "typedef" + +#: ../../c-api/typeobj.rst:340 +msgid "Parameter Types" +msgstr "Parametertypen" + +#: ../../c-api/typeobj.rst:340 +msgid "Return Type" +msgstr "Rückgabetyp" + +#: ../../c-api/typeobj.rst:347 ../../c-api/typeobj.rst:349 +#: ../../c-api/typeobj.rst:425 +msgid "void" +msgstr "void" + +#: ../../c-api/typeobj.rst:352 +msgid ":c:type:`visitproc`" +msgstr ":c:type:`visitproc`" + +#: ../../c-api/typeobj.rst:351 ../../c-api/typeobj.rst:363 +#: ../../c-api/typeobj.rst:376 ../../c-api/typeobj.rst:387 +#: ../../c-api/typeobj.rst:399 ../../c-api/typeobj.rst:409 +#: ../../c-api/typeobj.rst:419 ../../c-api/typeobj.rst:421 +#: ../../c-api/typeobj.rst:430 ../../c-api/typeobj.rst:452 +#: ../../c-api/typeobj.rst:458 ../../c-api/typeobj.rst:463 +msgid "int" +msgstr "int" + +#: ../../c-api/typeobj.rst:405 +msgid "Py_hash_t" +msgstr "Py_hash_t" + +#: ../../c-api/typeobj.rst:419 +msgid ":c:type:`getbufferproc`" +msgstr ":c:type:`getbufferproc`" + +#: ../../c-api/typeobj.rst:420 ../../c-api/typeobj.rst:426 +msgid ":c:type:`Py_buffer` *" +msgstr ":c:type:`Py_buffer` *" + +#: ../../c-api/typeobj.rst:425 +msgid ":c:type:`releasebufferproc`" +msgstr ":c:type:`releasebufferproc`" + +#: ../../c-api/typeobj.rst:470 +msgid "See :ref:`slot-typedefs` below for more detail." +msgstr "Mehr dazu steht unten unter :ref:`slot-typedefs`." + +#: ../../c-api/typeobj.rst:474 +msgid "PyTypeObject Definition" +msgstr "Definition von PyTypeObject" + +#: ../../c-api/typeobj.rst:476 +msgid "" +"The structure definition for :c:type:`PyTypeObject` can be found " +"in :file:`Include/cpython/object.h`. For convenience of reference, this " +"repeats the definition found there:" +msgstr "" +"Die Strukturdefinition für :c:type:`PyTypeObject` steht in :file:`Include/" +"cpython/object.h`. Der Bequemlichkeit halber ist sie hier wiederholt:" + +#: ../../c-api/typeobj.rst:482 +msgid "" +"typedef struct _typeobject {\n" +" PyObject_VAR_HEAD\n" +" const char *tp_name; /* For printing, in format \".\" */\n" +" Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */\n" +"\n" +" /* Methods to implement standard operations */\n" +"\n" +" destructor tp_dealloc;\n" +" Py_ssize_t tp_vectorcall_offset;\n" +" getattrfunc tp_getattr;\n" +" setattrfunc tp_setattr;\n" +" PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)\n" +" or tp_reserved (Python 3) */\n" +" reprfunc tp_repr;\n" +"\n" +" /* Method suites for standard classes */\n" +"\n" +" PyNumberMethods *tp_as_number;\n" +" PySequenceMethods *tp_as_sequence;\n" +" PyMappingMethods *tp_as_mapping;\n" +"\n" +" /* More standard operations (here for binary compatibility) */\n" +"\n" +" hashfunc tp_hash;\n" +" ternaryfunc tp_call;\n" +" reprfunc tp_str;\n" +" getattrofunc tp_getattro;\n" +" setattrofunc tp_setattro;\n" +"\n" +" /* Functions to access object as input/output buffer */\n" +" PyBufferProcs *tp_as_buffer;\n" +"\n" +" /* Flags to define presence of optional/expanded features */\n" +" unsigned long tp_flags;\n" +"\n" +" const char *tp_doc; /* Documentation string */\n" +"\n" +" /* Assigned meaning in release 2.0 */\n" +" /* call function for all accessible objects */\n" +" traverseproc tp_traverse;\n" +"\n" +" /* delete references to contained objects */\n" +" inquiry tp_clear;\n" +"\n" +" /* Assigned meaning in release 2.1 */\n" +" /* rich comparisons */\n" +" richcmpfunc tp_richcompare;\n" +"\n" +" /* weak reference enabler */\n" +" Py_ssize_t tp_weaklistoffset;\n" +"\n" +" /* Iterators */\n" +" getiterfunc tp_iter;\n" +" iternextfunc tp_iternext;\n" +"\n" +" /* Attribute descriptor and subclassing stuff */\n" +" PyMethodDef *tp_methods;\n" +" PyMemberDef *tp_members;\n" +" PyGetSetDef *tp_getset;\n" +" // Strong reference on a heap type, borrowed reference on a static type\n" +" PyTypeObject *tp_base;\n" +" PyObject *tp_dict;\n" +" descrgetfunc tp_descr_get;\n" +" descrsetfunc tp_descr_set;\n" +" Py_ssize_t tp_dictoffset;\n" +" initproc tp_init;\n" +" allocfunc tp_alloc;\n" +" newfunc tp_new;\n" +" freefunc tp_free; /* Low-level free-memory routine */\n" +" inquiry tp_is_gc; /* For PyObject_IS_GC */\n" +" PyObject *tp_bases;\n" +" PyObject *tp_mro; /* method resolution order */\n" +" PyObject *tp_cache; /* no longer used */\n" +" void *tp_subclasses; /* for static builtin types this is an index */\n" +" PyObject *tp_weaklist; /* not used for static builtin types */\n" +" destructor tp_del;\n" +"\n" +" /* Type attribute cache version tag. Added in version 2.6.\n" +" * If zero, the cache is invalid and must be initialized.\n" +" */\n" +" unsigned int tp_version_tag;\n" +"\n" +" destructor tp_finalize;\n" +" vectorcallfunc tp_vectorcall;\n" +"\n" +" /* bitset of which type-watchers care about this type */\n" +" unsigned char tp_watched;\n" +"\n" +" /* Number of tp_version_tag values used.\n" +" * Set to _Py_ATTR_CACHE_UNUSED if the attribute cache is\n" +" * disabled for this type (e.g. due to custom MRO entries).\n" +" * Otherwise, limited to MAX_VERSIONS_PER_CLASS (defined elsewhere).\n" +" */\n" +" uint16_t tp_versions_used;\n" +"} PyTypeObject;\n" +msgstr "" +"typedef struct _typeobject {\n" +" PyObject_VAR_HEAD\n" +" const char *tp_name; /* For printing, in format \".\" */\n" +" Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */\n" +"\n" +" /* Methods to implement standard operations */\n" +"\n" +" destructor tp_dealloc;\n" +" Py_ssize_t tp_vectorcall_offset;\n" +" getattrfunc tp_getattr;\n" +" setattrfunc tp_setattr;\n" +" PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)\n" +" or tp_reserved (Python 3) */\n" +" reprfunc tp_repr;\n" +"\n" +" /* Method suites for standard classes */\n" +"\n" +" PyNumberMethods *tp_as_number;\n" +" PySequenceMethods *tp_as_sequence;\n" +" PyMappingMethods *tp_as_mapping;\n" +"\n" +" /* More standard operations (here for binary compatibility) */\n" +"\n" +" hashfunc tp_hash;\n" +" ternaryfunc tp_call;\n" +" reprfunc tp_str;\n" +" getattrofunc tp_getattro;\n" +" setattrofunc tp_setattro;\n" +"\n" +" /* Functions to access object as input/output buffer */\n" +" PyBufferProcs *tp_as_buffer;\n" +"\n" +" /* Flags to define presence of optional/expanded features */\n" +" unsigned long tp_flags;\n" +"\n" +" const char *tp_doc; /* Documentation string */\n" +"\n" +" /* Assigned meaning in release 2.0 */\n" +" /* call function for all accessible objects */\n" +" traverseproc tp_traverse;\n" +"\n" +" /* delete references to contained objects */\n" +" inquiry tp_clear;\n" +"\n" +" /* Assigned meaning in release 2.1 */\n" +" /* rich comparisons */\n" +" richcmpfunc tp_richcompare;\n" +"\n" +" /* weak reference enabler */\n" +" Py_ssize_t tp_weaklistoffset;\n" +"\n" +" /* Iterators */\n" +" getiterfunc tp_iter;\n" +" iternextfunc tp_iternext;\n" +"\n" +" /* Attribute descriptor and subclassing stuff */\n" +" PyMethodDef *tp_methods;\n" +" PyMemberDef *tp_members;\n" +" PyGetSetDef *tp_getset;\n" +" // Strong reference on a heap type, borrowed reference on a static type\n" +" PyTypeObject *tp_base;\n" +" PyObject *tp_dict;\n" +" descrgetfunc tp_descr_get;\n" +" descrsetfunc tp_descr_set;\n" +" Py_ssize_t tp_dictoffset;\n" +" initproc tp_init;\n" +" allocfunc tp_alloc;\n" +" newfunc tp_new;\n" +" freefunc tp_free; /* Low-level free-memory routine */\n" +" inquiry tp_is_gc; /* For PyObject_IS_GC */\n" +" PyObject *tp_bases;\n" +" PyObject *tp_mro; /* method resolution order */\n" +" PyObject *tp_cache; /* no longer used */\n" +" void *tp_subclasses; /* for static builtin types this is an index */\n" +" PyObject *tp_weaklist; /* not used for static builtin types */\n" +" destructor tp_del;\n" +"\n" +" /* Type attribute cache version tag. Added in version 2.6.\n" +" * If zero, the cache is invalid and must be initialized.\n" +" */\n" +" unsigned int tp_version_tag;\n" +"\n" +" destructor tp_finalize;\n" +" vectorcallfunc tp_vectorcall;\n" +"\n" +" /* bitset of which type-watchers care about this type */\n" +" unsigned char tp_watched;\n" +"\n" +" /* Number of tp_version_tag values used.\n" +" * Set to _Py_ATTR_CACHE_UNUSED if the attribute cache is\n" +" * disabled for this type (e.g. due to custom MRO entries).\n" +" * Otherwise, limited to MAX_VERSIONS_PER_CLASS (defined elsewhere).\n" +" */\n" +" uint16_t tp_versions_used;\n" +"} PyTypeObject;\n" + +#: ../../c-api/typeobj.rst:487 +msgid "PyObject Slots" +msgstr "PyObject-Slots" + +#: ../../c-api/typeobj.rst:489 +msgid "" +"The type object structure extends the :c:type:`PyVarObject` structure. " +"The :c:member:`~PyVarObject.ob_size` field is used for dynamic types " +"(created by :c:func:`!type_new`, usually called from a class statement). " +"Note that :c:data:`PyType_Type` (the metatype) " +"initializes :c:member:`~PyTypeObject.tp_itemsize`, which means that its " +"instances (i.e. type objects) *must* have " +"the :c:member:`~PyVarObject.ob_size` field." +msgstr "" +"Die Struktur des Typobjekts erweitert die Struktur :c:type:`PyVarObject`. " +"Das Feld :c:member:`~PyVarObject.ob_size` wird für dynamische Typen " +"verwendet (erzeugt von :c:func:`!type_new`, üblicherweise aus einer class-" +"Anweisung heraus aufgerufen). Beachte, dass :c:data:`PyType_Type` (der " +"Metatyp) :c:member:`~PyTypeObject.tp_itemsize` initialisiert, was bedeutet, " +"dass seine Instanzen (also Typobjekte) das " +"Feld :c:member:`~PyVarObject.ob_size` haben *müssen*." + +#: ../../c-api/typeobj.rst:496 +msgid ":c:member:`PyObject.ob_refcnt`" +msgstr ":c:member:`PyObject.ob_refcnt`" + +#: ../../c-api/typeobj.rst:498 +msgid "" +"The type object's reference count is initialized to ``1`` by the " +"``PyObject_HEAD_INIT`` macro. Note that for :ref:`statically allocated type " +"objects `, the type's instances (objects " +"whose :c:member:`~PyObject.ob_type` points back to the type) do *not* count " +"as references. But for :ref:`dynamically allocated type objects `, the instances *do* count as references." +msgstr "" +"Der Referenzzähler des Typobjekts wird vom Makro ``PyObject_HEAD_INIT`` auf " +"``1`` initialisiert. Beachte, dass bei :ref:`statisch angelegten Typobjekten " +"` die Instanzen des Typs (Objekte, " +"deren :c:member:`~PyObject.ob_type` auf den Typ zurückverweist) *nicht* als " +"Referenzen zählen. Bei :ref:`dynamisch angelegten Typobjekten ` " +"zählen die Instanzen dagegen *sehr wohl* als Referenzen." + +#: ../../c-api/typeobj.rst:505 ../../c-api/typeobj.rst:528 +#: ../../c-api/typeobj.rst:544 ../../c-api/typeobj.rst:591 +#: ../../c-api/typeobj.rst:673 ../../c-api/typeobj.rst:817 +#: ../../c-api/typeobj.rst:862 ../../c-api/typeobj.rst:881 +#: ../../c-api/typeobj.rst:900 ../../c-api/typeobj.rst:918 +#: ../../c-api/typeobj.rst:944 ../../c-api/typeobj.rst:961 +#: ../../c-api/typeobj.rst:973 ../../c-api/typeobj.rst:985 +#: ../../c-api/typeobj.rst:1020 ../../c-api/typeobj.rst:1044 +#: ../../c-api/typeobj.rst:1066 ../../c-api/typeobj.rst:1089 +#: ../../c-api/typeobj.rst:1117 ../../c-api/typeobj.rst:1136 +#: ../../c-api/typeobj.rst:1155 ../../c-api/typeobj.rst:1195 +#: ../../c-api/typeobj.rst:1206 ../../c-api/typeobj.rst:1216 +#: ../../c-api/typeobj.rst:1226 ../../c-api/typeobj.rst:1240 +#: ../../c-api/typeobj.rst:1258 ../../c-api/typeobj.rst:1281 +#: ../../c-api/typeobj.rst:1299 ../../c-api/typeobj.rst:1314 +#: ../../c-api/typeobj.rst:1349 ../../c-api/typeobj.rst:1396 +#: ../../c-api/typeobj.rst:1422 ../../c-api/typeobj.rst:1441 +#: ../../c-api/typeobj.rst:1471 ../../c-api/typeobj.rst:1493 +#: ../../c-api/typeobj.rst:1531 ../../c-api/typeobj.rst:1543 +#: ../../c-api/typeobj.rst:1569 ../../c-api/typeobj.rst:1583 +#: ../../c-api/typeobj.rst:1729 ../../c-api/typeobj.rst:1796 +#: ../../c-api/typeobj.rst:1832 ../../c-api/typeobj.rst:1859 +#: ../../c-api/typeobj.rst:1885 ../../c-api/typeobj.rst:1900 +#: ../../c-api/typeobj.rst:1917 ../../c-api/typeobj.rst:1933 +#: ../../c-api/typeobj.rst:1965 ../../c-api/typeobj.rst:1997 +#: ../../c-api/typeobj.rst:2025 ../../c-api/typeobj.rst:2045 +#: ../../c-api/typeobj.rst:2074 ../../c-api/typeobj.rst:2120 +#: ../../c-api/typeobj.rst:2139 ../../c-api/typeobj.rst:2181 +#: ../../c-api/typeobj.rst:2206 ../../c-api/typeobj.rst:2246 +#: ../../c-api/typeobj.rst:2271 ../../c-api/typeobj.rst:2284 +#: ../../c-api/typeobj.rst:2294 ../../c-api/typeobj.rst:2311 +#: ../../c-api/typeobj.rst:2328 ../../c-api/typeobj.rst:2344 +#: ../../c-api/typeobj.rst:2488 ../../c-api/typeobj.rst:2548 +msgid "**Inheritance:**" +msgstr "**Vererbung:**" + +#: ../../c-api/typeobj.rst:507 ../../c-api/typeobj.rst:546 +#: ../../c-api/typeobj.rst:593 +msgid "This field is not inherited by subtypes." +msgstr "Dieses Feld wird nicht an Untertypen vererbt." + +#: ../../c-api/typeobj.rst:510 +msgid ":c:member:`PyObject.ob_type`" +msgstr ":c:member:`PyObject.ob_type`" + +#: ../../c-api/typeobj.rst:512 +msgid "" +"This is the type's type, in other words its metatype. It is initialized by " +"the argument to the ``PyObject_HEAD_INIT`` macro, and its value should " +"normally be ``&PyType_Type``. However, for dynamically loadable extension " +"modules that must be usable on Windows (at least), the compiler complains " +"that this is not a valid initializer. Therefore, the convention is to pass " +"``NULL`` to the ``PyObject_HEAD_INIT`` macro and to initialize this field " +"explicitly at the start of the module's initialization function, before " +"doing anything else. This is typically done like this::" +msgstr "" +"Das ist der Typ des Typs, mit anderen Worten sein Metatyp. Er wird durch das " +"Argument des Makros ``PyObject_HEAD_INIT`` initialisiert, und sein Wert " +"sollte normalerweise ``&PyType_Type`` sein. Bei dynamisch ladbaren " +"Erweiterungsmodulen, die (zumindest) unter Windows verwendbar sein müssen, " +"beschwert sich der Compiler allerdings, dass das kein gültiger " +"Initialisierer sei. Deshalb ist es üblich, dem Makro ``PyObject_HEAD_INIT`` " +"``NULL`` zu übergeben und dieses Feld ausdrücklich am Anfang der " +"Initialisierungsfunktion des Moduls zu setzen, bevor irgendetwas anderes " +"geschieht. Üblicherweise sieht das so aus::" + +#: ../../c-api/typeobj.rst:521 +msgid "Foo_Type.ob_type = &PyType_Type;" +msgstr "Foo_Type.ob_type = &PyType_Type;" + +#: ../../c-api/typeobj.rst:523 +msgid "" +"This should be done before any instances of the type are " +"created. :c:func:`PyType_Ready` checks if :c:member:`~PyObject.ob_type` is " +"``NULL``, and if so, initializes it to the :c:member:`~PyObject.ob_type` " +"field of the base class. :c:func:`PyType_Ready` will not change this field " +"if it is non-zero." +msgstr "" +"Das sollte geschehen, bevor Instanzen des Typs erzeugt " +"werden. :c:func:`PyType_Ready` prüft, ob :c:member:`~PyObject.ob_type` " +"``NULL`` ist, und initialisiert es in diesem Fall mit dem " +"Feld :c:member:`~PyObject.ob_type` der Basisklasse. :c:func:`PyType_Ready` " +"ändert dieses Feld nicht, wenn es ungleich null ist." + +#: ../../c-api/typeobj.rst:530 ../../c-api/typeobj.rst:819 +#: ../../c-api/typeobj.rst:946 ../../c-api/typeobj.rst:1046 +#: ../../c-api/typeobj.rst:1068 ../../c-api/typeobj.rst:1861 +#: ../../c-api/typeobj.rst:1887 ../../c-api/typeobj.rst:2027 +#: ../../c-api/typeobj.rst:2047 ../../c-api/typeobj.rst:2122 +#: ../../c-api/typeobj.rst:2248 ../../c-api/typeobj.rst:2490 +msgid "This field is inherited by subtypes." +msgstr "Dieses Feld wird an Untertypen vererbt." + +#: ../../c-api/typeobj.rst:534 +msgid "PyVarObject Slots" +msgstr "PyVarObject-Slots" + +#: ../../c-api/typeobj.rst:536 +msgid ":c:member:`PyVarObject.ob_size`" +msgstr ":c:member:`PyVarObject.ob_size`" + +#: ../../c-api/typeobj.rst:538 +msgid "" +"For :ref:`statically allocated type objects `, this should be " +"initialized to zero. For :ref:`dynamically allocated type objects `, this field has a special internal meaning." +msgstr "" +"Bei :ref:`statisch angelegten Typobjekten ` sollte das auf " +"null initialisiert werden. Bei :ref:`dynamisch angelegten Typobjekten ` hat dieses Feld eine besondere interne Bedeutung." + +#: ../../c-api/typeobj.rst:542 +msgid "This field should be accessed using the :c:func:`Py_SIZE()` macro." +msgstr "" +"Auf dieses Feld sollte über das Makro :c:func:`Py_SIZE()` zugegriffen werden." + +#: ../../c-api/typeobj.rst:550 +msgid "PyTypeObject Slots" +msgstr "PyTypeObject-Slots" + +#: ../../c-api/typeobj.rst:552 +msgid "" +"Each slot has a section describing inheritance. If :c:func:`PyType_Ready` " +"may set a value when the field is set to ``NULL`` then there will also be a " +"\"Default\" section. (Note that many fields set " +"on :c:data:`PyBaseObject_Type` and :c:data:`PyType_Type` effectively act as " +"defaults.)" +msgstr "" +"Zu jedem Slot gibt es einen Abschnitt, der die Vererbung beschreibt. " +"Kann :c:func:`PyType_Ready` einen Wert setzen, wenn das Feld auf ``NULL`` " +"gesetzt ist, gibt es außerdem einen Abschnitt „Vorgabe“. (Beachte, dass " +"viele Felder, die an :c:data:`PyBaseObject_Type` und :c:data:`PyType_Type` " +"gesetzt sind, praktisch wie Vorgaben wirken.)" + +#: ../../c-api/typeobj.rst:559 +msgid "" +"See :c:macro:`Py_tp_name` for the corresponding :c:member:`Slot ID " +"`." +msgstr "" +"Die zugehörige :c:member:`Slot-ID ` steht " +"unter :c:macro:`Py_tp_name`." + +#: ../../c-api/typeobj.rst:562 +msgid "" +"Pointer to a NUL-terminated string containing the name of the type. For " +"types that are accessible as module globals, the string should be the full " +"module name, followed by a dot, followed by the type name; for built-in " +"types, it should be just the type name. If the module is a submodule of a " +"package, the full package name is part of the full module name. For " +"example, a type named :class:`!T` defined in module :mod:`!M` in " +"subpackage :mod:`!Q` in package :mod:`!P` should have " +"the :c:member:`~PyTypeObject.tp_name` initializer ``\"P.Q.M.T\"``." +msgstr "" +"Zeiger auf eine NUL-terminierte Zeichenkette mit dem Namen des Typs. Bei " +"Typen, die als Modulglobale zugänglich sind, sollte die Zeichenkette der " +"vollständige Modulname sein, gefolgt von einem Punkt und dem Typnamen. Bei " +"integrierten Typen sollte es nur der Typname sein. Ist das Modul ein " +"Untermodul eines Pakets, gehört der vollständige Paketname zum vollständigen " +"Modulnamen. Ein Typ namens :class:`!T` zum Beispiel, der im Modul :mod:`!M` " +"im Unterpaket :mod:`!Q` im Paket :mod:`!P` definiert ist, sollte " +"den :c:member:`~PyTypeObject.tp_name`-Initialisierer ``\"P.Q.M.T\"`` haben." + +#: ../../c-api/typeobj.rst:570 +msgid "" +"For :ref:`dynamically allocated type objects `, this should just " +"be the type name, and the module name explicitly stored in the type dict as " +"the value for key ``'__module__'``." +msgstr "" +"Bei :ref:`dynamisch angelegten Typobjekten ` sollte das nur der " +"Typname sein. Der Modulname wird ausdrücklich im Dictionary des Typs unter " +"dem Schlüssel ``'__module__'`` abgelegt." + +#: ../../c-api/typeobj.rst:575 +msgid "" +"For :ref:`statically allocated type objects `, the *tp_name* " +"field should contain a dot. Everything before the last dot is made " +"accessible as the :attr:`~type.__module__` attribute, and everything after " +"the last dot is made accessible as the :attr:`~type.__name__` attribute." +msgstr "" +"Bei :ref:`statisch angelegten Typobjekten ` sollte das Feld " +"*tp_name* einen Punkt enthalten. Alles vor dem letzten Punkt wird als " +"Attribut :attr:`~type.__module__` zugänglich gemacht, alles nach dem letzten " +"Punkt als Attribut :attr:`~type.__name__`." + +#: ../../c-api/typeobj.rst:581 +msgid "" +"If no dot is present, the entire :c:member:`~PyTypeObject.tp_name` field is " +"made accessible as the :attr:`~type.__name__` attribute, and " +"the :attr:`~type.__module__` attribute is undefined (unless explicitly set " +"in the dictionary, as explained above). This means your type will be " +"impossible to pickle. Additionally, it will not be listed in module " +"documentations created with pydoc." +msgstr "" +"Ist kein Punkt vorhanden, wird das gesamte " +"Feld :c:member:`~PyTypeObject.tp_name` als Attribut :attr:`~type.__name__` " +"zugänglich gemacht, und das Attribut :attr:`~type.__module__` ist " +"undefiniert (sofern es nicht wie oben beschrieben ausdrücklich im Dictionary " +"gesetzt wird). Das bedeutet, dass sich dein Typ nicht picklen lässt. " +"Außerdem wird er in Moduldokumentationen, die mit pydoc erzeugt werden, " +"nicht aufgeführt." + +#: ../../c-api/typeobj.rst:587 +msgid "" +"This field must not be ``NULL``. It is the only required field " +"in :c:func:`PyTypeObject` (other than " +"potentially :c:member:`~PyTypeObject.tp_itemsize`)." +msgstr "" +"Dieses Feld darf nicht ``NULL`` sein. Es ist das einzige erforderliche Feld " +"in :c:func:`PyTypeObject` (abgesehen möglicherweise " +"von :c:member:`~PyTypeObject.tp_itemsize`)." + +#: ../../c-api/typeobj.rst:599 +msgid "" +"These fields allow calculating the size in bytes of instances of the type." +msgstr "" +"Über diese Felder lässt sich die Größe von Instanzen des Typs in Bytes " +"berechnen." + +#: ../../c-api/typeobj.rst:601 +msgid "" +"See :c:macro:`Py_tp_basicsize`, :c:macro:`Py_tp_extra_basicsize` " +"and :c:macro:`Py_tp_itemsize` for the corresponding :c:member:`Slot IDs " +"`." +msgstr "" +"Die zugehörigen :c:member:`Slot-IDs ` stehen " +"unter :c:macro:`Py_tp_basicsize`, :c:macro:`Py_tp_extra_basicsize` " +"und :c:macro:`Py_tp_itemsize`." + +#: ../../c-api/typeobj.rst:605 +msgid "" +"There are two kinds of types: types with fixed-length instances have a " +"zero :c:member:`!tp_itemsize` field, types with variable-length instances " +"have a non-zero :c:member:`!tp_itemsize` field. For a type with fixed-" +"length instances, all instances have the same size, given in :c:member:`!" +"tp_basicsize`. (Exceptions to this rule can be made " +"using :c:func:`PyUnstable_Object_GC_NewWithExtraData`.)" +msgstr "" +"Es gibt zwei Arten von Typen: Typen mit Instanzen fester Länge haben ein " +"Feld :c:member:`!tp_itemsize` von null, Typen mit Instanzen veränderlicher " +"Länge ein Feld :c:member:`!tp_itemsize` ungleich null. Bei einem Typ mit " +"Instanzen fester Länge haben alle Instanzen dieselbe Größe, die " +"in :c:member:`!tp_basicsize` angegeben ist. (Ausnahmen von dieser Regel " +"lassen sich mit :c:func:`PyUnstable_Object_GC_NewWithExtraData` machen.)" + +#: ../../c-api/typeobj.rst:612 +msgid "" +"For a type with variable-length instances, the instances must have " +"an :c:member:`~PyVarObject.ob_size` field, and the instance size " +"is :c:member:`!tp_basicsize` plus N times :c:member:`!tp_itemsize`, where N " +"is the \"length\" of the object." +msgstr "" +"Bei einem Typ mit Instanzen veränderlicher Länge müssen die Instanzen ein " +"Feld :c:member:`~PyVarObject.ob_size` haben, und die Instanzgröße " +"ist :c:member:`!tp_basicsize` plus N mal :c:member:`!tp_itemsize`, wobei N " +"die „Länge“ des Objekts ist." + +#: ../../c-api/typeobj.rst:617 +msgid "" +"Functions like :c:func:`PyObject_NewVar` will take the value of N as an " +"argument, and store in the instance's :c:member:`~PyVarObject.ob_size` " +"field. Note that the :c:member:`~PyVarObject.ob_size` field may later be " +"used for other purposes. For example, :py:type:`int` instances use the bits " +"of :c:member:`~PyVarObject.ob_size` in an implementation-defined way; the " +"underlying storage and its size should be accessed " +"using :c:func:`PyLong_Export`." +msgstr "" +"Funktionen wie :c:func:`PyObject_NewVar` nehmen den Wert von N als Argument " +"und legen ihn im Feld :c:member:`~PyVarObject.ob_size` der Instanz ab. " +"Beachte, dass das Feld :c:member:`~PyVarObject.ob_size` später für andere " +"Zwecke verwendet werden kann. :py:type:`int`-Instanzen zum Beispiel nutzen " +"die Bits von :c:member:`~PyVarObject.ob_size` auf eine von der " +"Implementierung festgelegte Weise. Auf den zugrunde liegenden Speicher und " +"seine Größe sollte über :c:func:`PyLong_Export` zugegriffen werden." + +#: ../../c-api/typeobj.rst:627 +msgid "" +"The :c:member:`~PyVarObject.ob_size` field should be accessed using " +"the :c:func:`Py_SIZE()` and :c:func:`Py_SET_SIZE()` macros." +msgstr "" +"Auf das Feld :c:member:`~PyVarObject.ob_size` sollte über die " +"Makros :c:func:`Py_SIZE()` und :c:func:`Py_SET_SIZE()` zugegriffen werden." + +#: ../../c-api/typeobj.rst:630 +msgid "" +"Also, the presence of an :c:member:`~PyVarObject.ob_size` field in the " +"instance layout doesn't mean that the instance structure is variable-length. " +"For example, the :py:type:`list` type has fixed-length instances, yet those " +"instances have a :c:member:`~PyVarObject.ob_size` field. (As " +"with :py:type:`int`, avoid reading lists' :c:member:`!ob_size` directly. " +"Call :c:func:`PyList_Size` instead.)" +msgstr "" +"Umgekehrt bedeutet das Vorhandensein eines " +"Feldes :c:member:`~PyVarObject.ob_size` im Aufbau der Instanz nicht, dass " +"die Instanzstruktur veränderliche Länge hat. Der Typ :py:type:`list` zum " +"Beispiel hat Instanzen fester Länge, und diese Instanzen haben trotzdem ein " +"Feld :c:member:`~PyVarObject.ob_size`. (Wie bei :py:type:`int` solltest " +"du :c:member:`!ob_size` von Listen nicht unmittelbar auslesen. Rufe " +"stattdessen :c:func:`PyList_Size` auf.)" + +#: ../../c-api/typeobj.rst:637 +msgid "" +"The :c:member:`!tp_basicsize` includes size needed for data of the " +"type's :c:member:`~PyTypeObject.tp_base`, plus any extra data needed by each " +"instance." +msgstr "" +":c:member:`!tp_basicsize` schließt den Platz ein, der für die Daten " +"des :c:member:`~PyTypeObject.tp_base` des Typs nötig ist, zuzüglich aller " +"zusätzlichen Daten, die jede Instanz braucht." + +#: ../../c-api/typeobj.rst:641 +msgid "" +"The correct way to set :c:member:`!tp_basicsize` is to use the ``sizeof`` " +"operator on the struct used to declare the instance layout. This struct must " +"include the struct used to declare the base type. In other " +"words, :c:member:`!tp_basicsize` must be greater than or equal to the " +"base's :c:member:`!tp_basicsize`." +msgstr "" +"Der richtige Weg, :c:member:`!tp_basicsize` zu setzen, führt über den " +"``sizeof``-Operator auf der Struktur, mit der der Aufbau der Instanz " +"deklariert wird. Diese Struktur muss die Struktur einschließen, mit der der " +"Basistyp deklariert wird. Mit anderen Worten muss :c:member:`!tp_basicsize` " +"größer oder gleich dem :c:member:`!tp_basicsize` des Basistyps sein." + +#: ../../c-api/typeobj.rst:647 +msgid "" +"Since every type is a subtype of :py:type:`object`, this struct must " +"include :c:type:`PyObject` or :c:type:`PyVarObject` (depending on " +"whether :c:member:`~PyVarObject.ob_size` should be included). These are " +"usually defined by the macro :c:macro:`PyObject_HEAD` " +"or :c:macro:`PyObject_VAR_HEAD`, respectively." +msgstr "" +"Da jeder Typ ein Untertyp von :py:type:`object` ist, muss diese " +"Struktur :c:type:`PyObject` oder :c:type:`PyVarObject` einschließen (je " +"nachdem, ob :c:member:`~PyVarObject.ob_size` enthalten sein soll). " +"Üblicherweise werden diese über das Makro :c:macro:`PyObject_HEAD` " +"beziehungsweise :c:macro:`PyObject_VAR_HEAD` festgelegt." + +#: ../../c-api/typeobj.rst:653 +msgid "" +"The basic size does not include the GC header size, as that header is not " +"part of :c:macro:`PyObject_HEAD`." +msgstr "" +"Die Grundgröße schließt die Größe des GC-Kopfes nicht ein, weil dieser Kopf " +"nicht zu :c:macro:`PyObject_HEAD` gehört." + +#: ../../c-api/typeobj.rst:656 +msgid "" +"For cases where struct used to declare the base type is unknown, " +"see :c:member:`PyType_Spec.basicsize` and :c:func:`PyType_FromMetaclass`." +msgstr "" +"Für Fälle, in denen die Struktur zur Deklaration des Basistyps unbekannt " +"ist, siehe :c:member:`PyType_Spec.basicsize` " +"und :c:func:`PyType_FromMetaclass`." + +#: ../../c-api/typeobj.rst:659 +msgid "Notes about alignment:" +msgstr "Hinweise zur Ausrichtung:" + +#: ../../c-api/typeobj.rst:661 +msgid "" +":c:member:`!tp_basicsize` must be a multiple of ``_Alignof(PyObject)``. When " +"using ``sizeof`` on a ``struct`` that includes :c:macro:`PyObject_HEAD`, as " +"recommended, the compiler ensures this. When not using a C ``struct``, or " +"when using compiler extensions like ``__attribute__((packed))``, it is up to " +"you." +msgstr "" +":c:member:`!tp_basicsize` muss ein Vielfaches von ``_Alignof(PyObject)`` " +"sein. Verwendest du wie empfohlen ``sizeof`` auf einer ``struct``, " +"die :c:macro:`PyObject_HEAD` einschließt, sorgt der Compiler dafür. " +"Verwendest du keine C-``struct`` oder Compiler-Erweiterungen wie " +"``__attribute__((packed))``, liegt es an dir." + +#: ../../c-api/typeobj.rst:666 +msgid "" +"If the variable items require a particular alignment, :c:member:`!" +"tp_basicsize` and :c:member:`!tp_itemsize` must each be a multiple of that " +"alignment. For example, if a type's variable part stores a ``double``, it is " +"your responsibility that both fields are a multiple of ``_Alignof(double)``." +msgstr "" +"Erfordern die veränderlichen Elemente eine bestimmte Ausrichtung, " +"müssen :c:member:`!tp_basicsize` und :c:member:`!tp_itemsize` jeweils ein " +"Vielfaches dieser Ausrichtung sein. Speichert der veränderliche Teil eines " +"Typs zum Beispiel ein ``double``, liegt es in deiner Verantwortung, dass " +"beide Felder ein Vielfaches von ``_Alignof(double)`` sind." + +#: ../../c-api/typeobj.rst:675 +msgid "" +"These fields are inherited separately by subtypes. (That is, if the field is " +"set to zero, :c:func:`PyType_Ready` will copy the value from the base type, " +"indicating that the instances do not need additional storage.)" +msgstr "" +"Diese Felder werden von Untertypen einzeln vererbt. (Das heißt: Ist das Feld " +"auf null gesetzt, kopiert :c:func:`PyType_Ready` den Wert aus dem Basistyp, " +"was anzeigt, dass die Instanzen keinen zusätzlichen Speicher brauchen.)" + +#: ../../c-api/typeobj.rst:680 +msgid "" +"If the base type has a non-zero :c:member:`~PyTypeObject.tp_itemsize`, it is " +"generally not safe to set :c:member:`~PyTypeObject.tp_itemsize` to a " +"different non-zero value in a subtype (though this depends on the " +"implementation of the base type)." +msgstr "" +"Hat der Basistyp ein :c:member:`~PyTypeObject.tp_itemsize` ungleich null, " +"ist es im Allgemeinen nicht gefahrlos " +"möglich, :c:member:`~PyTypeObject.tp_itemsize` in einem Untertyp auf einen " +"anderen Wert ungleich null zu setzen (das hängt allerdings von der Umsetzung " +"des Basistyps ab)." + +#: ../../c-api/typeobj.rst:689 +msgid "" +"A pointer to the instance destructor function. The function signature is::" +msgstr "" +"Ein Zeiger auf die Destruktorfunktion der Instanz. Die Signatur der Funktion " +"lautet::" + +#: ../../c-api/typeobj.rst:691 +msgid "void tp_dealloc(PyObject *self);" +msgstr "void tp_dealloc(PyObject *self);" + +#: ../../c-api/typeobj.rst:693 +msgid "" +"The destructor function should remove all references which the instance owns " +"(e.g., call :c:func:`Py_CLEAR`), free all memory buffers owned by the " +"instance, and call the type's :c:member:`~PyTypeObject.tp_free` function to " +"free the object itself." +msgstr "" +"Die Destruktorfunktion sollte alle Referenzen entfernen, die die Instanz " +"besitzt (also zum Beispiel :c:func:`Py_CLEAR` aufrufen), alle Speicherpuffer " +"freigeben, die der Instanz gehören, und die " +"Funktion :c:member:`~PyTypeObject.tp_free` des Typs aufrufen, um das Objekt " +"selbst freizugeben." + +#: ../../c-api/typeobj.rst:698 +msgid "" +"If you may call functions that may set the error indicator, you must " +"use :c:func:`PyErr_GetRaisedException` " +"and :c:func:`PyErr_SetRaisedException` to ensure you don't clobber a " +"preexisting error indicator (the deallocation could have occurred while " +"processing a different error):" +msgstr "" +"Rufst du möglicherweise Funktionen auf, die den Fehlerindikator setzen " +"können, musst du :c:func:`PyErr_GetRaisedException` " +"und :c:func:`PyErr_SetRaisedException` verwenden, damit du einen bereits " +"vorhandenen Fehlerindikator nicht überschreibst (die Freigabe könnte während " +"der Behandlung eines anderen Fehlers erfolgt sein):" + +#: ../../c-api/typeobj.rst:703 +msgid "" +"static void\n" +"foo_dealloc(foo_object *self)\n" +"{\n" +" PyObject *et, *ev, *etb;\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +" ...\n" +" PyErr_SetRaisedException(exc);\n" +"}" +msgstr "" +"static void\n" +"foo_dealloc(foo_object *self)\n" +"{\n" +" PyObject *et, *ev, *etb;\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +" ...\n" +" PyErr_SetRaisedException(exc);\n" +"}" + +#: ../../c-api/typeobj.rst:714 +msgid "" +"The dealloc handler itself must not raise an exception; if it hits an error " +"case it should call :c:func:`PyErr_FormatUnraisable` to log (and clear) an " +"unraisable exception." +msgstr "" +"Der Dealloc-Handler selbst darf keine Ausnahme auslösen. Stößt er auf einen " +"Fehlerfall, sollte er :c:func:`PyErr_FormatUnraisable` aufrufen, um eine " +"nicht auslösbare Ausnahme zu protokollieren (und zu löschen)." + +#: ../../c-api/typeobj.rst:718 +msgid "No guarantees are made about when an object is destroyed, except:" +msgstr "" +"Darüber, wann ein Objekt zerstört wird, werden keine Zusagen gemacht, außer:" + +#: ../../c-api/typeobj.rst:720 +msgid "" +"Python will destroy an object immediately or some time after the final " +"reference to the object is deleted, unless its finalizer " +"(:c:member:`~PyTypeObject.tp_finalize`) subsequently resurrects the object." +msgstr "" +"Python zerstört ein Objekt sofort oder einige Zeit, nachdem die letzte " +"Referenz darauf gelöscht wurde, sofern nicht sein Finalisierer " +"(:c:member:`~PyTypeObject.tp_finalize`) das Objekt anschließend wieder " +"auferstehen lässt." + +#: ../../c-api/typeobj.rst:724 +msgid "" +"An object will not be destroyed while it is being automatically finalized " +"(:c:member:`~PyTypeObject.tp_finalize`) or automatically cleared " +"(:c:member:`~PyTypeObject.tp_clear`)." +msgstr "" +"Ein Objekt wird nicht zerstört, während es automatisch finalisiert " +"(:c:member:`~PyTypeObject.tp_finalize`) oder automatisch geleert wird " +"(:c:member:`~PyTypeObject.tp_clear`)." + +#: ../../c-api/typeobj.rst:728 +msgid "" +"CPython currently destroys an object immediately from :c:func:`Py_DECREF` " +"when the new reference count is zero, but this may change in a future " +"version." +msgstr "" +"CPython zerstört ein Objekt derzeit unmittelbar aus :c:func:`Py_DECREF` " +"heraus, sobald der neue Referenzzähler null ist. Das kann sich in einer " +"künftigen Version ändern." + +#: ../../c-api/typeobj.rst:732 +msgid "" +"It is recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " +"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " +"finalized before destruction." +msgstr "" +"Es wird empfohlen, am Anfang von :c:member:`!" +"tp_dealloc` :c:func:`PyObject_CallFinalizerFromDealloc` aufzurufen, damit " +"das Objekt vor der Zerstörung in jedem Fall finalisiert ist." + +#: ../../c-api/typeobj.rst:736 +msgid "" +"If the type supports garbage collection (the :c:macro:`Py_TPFLAGS_HAVE_GC` " +"flag is set), the destructor should call :c:func:`PyObject_GC_UnTrack` " +"before clearing any member fields." +msgstr "" +"Unterstützt der Typ die Speicherbereinigung (das " +"Flag :c:macro:`Py_TPFLAGS_HAVE_GC` ist gesetzt), sollte der " +"Destruktor :c:func:`PyObject_GC_UnTrack` aufrufen, bevor er Member-Felder " +"leert." + +#: ../../c-api/typeobj.rst:740 +msgid "" +"It is permissible to call :c:member:`~PyTypeObject.tp_clear` " +"from :c:member:`!tp_dealloc` to reduce code duplication and to guarantee " +"that the object is always cleared before destruction. Beware " +"that :c:member:`!tp_clear` might have already been called." +msgstr "" +"Es ist zulässig, :c:member:`~PyTypeObject.tp_clear` aus :c:member:`!" +"tp_dealloc` heraus aufzurufen, um doppelten Code zu vermeiden und " +"sicherzustellen, dass das Objekt vor der Zerstörung immer geleert ist. Sei " +"dir bewusst, dass :c:member:`!tp_clear` bereits aufgerufen worden sein kann." + +#: ../../c-api/typeobj.rst:745 +msgid "" +"If the type is heap allocated (:c:macro:`Py_TPFLAGS_HEAPTYPE`), the " +"deallocator should release the owned reference to its type object " +"(via :c:func:`Py_DECREF`) after calling the type deallocator. See the " +"example code below.::" +msgstr "" +"Ist der Typ auf dem Heap angelegt (:c:macro:`Py_TPFLAGS_HEAPTYPE`), sollte " +"der Deallokator die gehaltene Referenz auf sein Typobjekt freigeben " +"(über :c:func:`Py_DECREF`), nachdem er den Deallokator des Typs aufgerufen " +"hat. Siehe den Beispielcode unten.::" + +#: ../../c-api/typeobj.rst:750 +msgid "" +"static void\n" +"foo_dealloc(PyObject *op)\n" +"{\n" +" foo_object *self = (foo_object *) op;\n" +" PyObject_GC_UnTrack(self);\n" +" Py_CLEAR(self->ref);\n" +" Py_TYPE(self)->tp_free(self);\n" +"}" +msgstr "" +"static void\n" +"foo_dealloc(PyObject *op)\n" +"{\n" +" foo_object *self = (foo_object *) op;\n" +" PyObject_GC_UnTrack(self);\n" +" Py_CLEAR(self->ref);\n" +" Py_TYPE(self)->tp_free(self);\n" +"}" + +#: ../../c-api/typeobj.rst:759 +msgid "" +":c:member:`!tp_dealloc` must leave the exception status unchanged. If it " +"needs to call something that might raise an exception, the exception state " +"must be backed up first and restored later (after logging any exceptions " +"with :c:func:`PyErr_WriteUnraisable`)." +msgstr "" +":c:member:`!tp_dealloc` muss den Ausnahmezustand unverändert lassen. Muss es " +"etwas aufrufen, das eine Ausnahme auslösen könnte, ist der Ausnahmezustand " +"zuerst zu sichern und später wiederherzustellen (nachdem etwaige Ausnahmen " +"mit :c:func:`PyErr_WriteUnraisable` protokolliert wurden)." + +#: ../../c-api/typeobj.rst:764 +msgid "Example::" +msgstr "Beispiel::" + +#: ../../c-api/typeobj.rst:766 +msgid "" +"static void\n" +"foo_dealloc(PyObject *self)\n" +"{\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" if (PyObject_CallFinalizerFromDealloc(self) < 0) {\n" +" // self was resurrected.\n" +" goto done;\n" +" }\n" +"\n" +" PyTypeObject *tp = Py_TYPE(self);\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HAVE_GC) {\n" +" PyObject_GC_UnTrack(self);\n" +" }\n" +"\n" +" // Optional, but convenient to avoid code duplication.\n" +" if (tp->tp_clear && tp->tp_clear(self) < 0) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +"\n" +" // Any additional destruction goes here.\n" +"\n" +" tp->tp_free(self);\n" +" self = NULL; // In case PyErr_WriteUnraisable() is called below.\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" +" Py_CLEAR(tp);\n" +" }\n" +"\n" +"done:\n" +" // Optional, if something was called that might have raised an\n" +" // exception.\n" +" if (PyErr_Occurred()) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +" PyErr_SetRaisedException(exc);\n" +"}" +msgstr "" +"static void\n" +"foo_dealloc(PyObject *self)\n" +"{\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" if (PyObject_CallFinalizerFromDealloc(self) < 0) {\n" +" // self was resurrected.\n" +" goto done;\n" +" }\n" +"\n" +" PyTypeObject *tp = Py_TYPE(self);\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HAVE_GC) {\n" +" PyObject_GC_UnTrack(self);\n" +" }\n" +"\n" +" // Optional, but convenient to avoid code duplication.\n" +" if (tp->tp_clear && tp->tp_clear(self) < 0) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +"\n" +" // Any additional destruction goes here.\n" +"\n" +" tp->tp_free(self);\n" +" self = NULL; // In case PyErr_WriteUnraisable() is called below.\n" +"\n" +" if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" +" Py_CLEAR(tp);\n" +" }\n" +"\n" +"done:\n" +" // Optional, if something was called that might have raised an\n" +" // exception.\n" +" if (PyErr_Occurred()) {\n" +" PyErr_WriteUnraisable(self);\n" +" }\n" +" PyErr_SetRaisedException(exc);\n" +"}" + +#: ../../c-api/typeobj.rst:805 +msgid "" +":c:member:`!tp_dealloc` may be called from any Python thread, not just the " +"thread which created the object (if the object becomes part of a refcount " +"cycle, that cycle might be collected by a garbage collection on any " +"thread). This is not a problem for Python API calls, since the thread on " +"which :c:member:`!tp_dealloc` is called with an :term:`attached thread " +"state`. However, if the object being destroyed in turn destroys objects " +"from some other C library, care should be taken to ensure that destroying " +"those objects on the thread which called :c:member:`!tp_dealloc` will not " +"violate any assumptions of the library." +msgstr "" +":c:member:`!tp_dealloc` darf aus jedem Python-Thread aufgerufen werden, " +"nicht nur aus dem, der das Objekt erzeugt hat (wird das Objekt Teil eines " +"Referenzzyklus, kann dieser Zyklus von einer Speicherbereinigung in einem " +"beliebigen Thread eingesammelt werden). Für Aufrufe der Python-API ist das " +"kein Problem, denn der Thread, auf dem :c:member:`!tp_dealloc` aufgerufen " +"wird, hat einen :term:`angehängten Thread-Zustand `. " +"Zerstört das zu zerstörende Objekt seinerseits Objekte aus einer anderen C-" +"Bibliothek, ist allerdings darauf zu achten, dass das Zerstören dieser " +"Objekte auf dem Thread, der :c:member:`!tp_dealloc` aufgerufen hat, keine " +"Annahmen dieser Bibliothek verletzt." + +#: ../../c-api/typeobj.rst:823 ../../c-api/typeobj.rst:1740 +#: ../../c-api/typeobj.rst:2503 +msgid "" +":ref:`life-cycle` for details about how this slot relates to other slots." +msgstr "" +":ref:`life-cycle` -- Einzelheiten dazu, wie dieser Slot mit den anderen " +"Slots zusammenhängt." + +#: ../../c-api/typeobj.rst:828 +msgid "" +"An optional offset to a per-instance function that implements calling the " +"object using the :ref:`vectorcall protocol `, a more efficient " +"alternative of the simpler :c:member:`~PyTypeObject.tp_call`." +msgstr "" +"Ein wahlfreier Versatz zu einer Funktion je Instanz, die das Aufrufen des " +"Objekts über das :ref:`vectorcall-Protokoll ` umsetzt -- eine " +"wirksamere Alternative zum einfacheren :c:member:`~PyTypeObject.tp_call`." + +#: ../../c-api/typeobj.rst:833 +msgid "" +"This field is only used if the flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` is " +"set. If so, this must be a positive integer containing the offset in the " +"instance of a :c:type:`vectorcallfunc` pointer." +msgstr "" +"Dieses Feld wird nur verwendet, wenn das " +"Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` gesetzt ist. Ist es das, muss " +"dies eine positive ganze Zahl sein, die den Versatz " +"eines :c:type:`vectorcallfunc`-Zeigers in der Instanz enthält." + +#: ../../c-api/typeobj.rst:837 +msgid "" +"The *vectorcallfunc* pointer may be ``NULL``, in which case the instance " +"behaves as if :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the " +"instance falls back to :c:member:`~PyTypeObject.tp_call`." +msgstr "" +"Der *vectorcallfunc*-Zeiger darf ``NULL`` sein. Die Instanz verhält sich " +"dann so, als wäre :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` nicht gesetzt: Das " +"Aufrufen der Instanz fällt auf :c:member:`~PyTypeObject.tp_call` zurück." + +#: ../../c-api/typeobj.rst:841 +msgid "" +"Any class that sets ``Py_TPFLAGS_HAVE_VECTORCALL`` must also " +"set :c:member:`~PyTypeObject.tp_call` and make sure its behaviour is " +"consistent with the *vectorcallfunc* function. This can be done by setting " +"*tp_call* to :c:func:`PyVectorcall_Call`." +msgstr "" +"Jede Klasse, die ``Py_TPFLAGS_HAVE_VECTORCALL`` setzt, muss " +"auch :c:member:`~PyTypeObject.tp_call` setzen und dafür sorgen, dass dessen " +"Verhalten zur *vectorcallfunc*-Funktion passt. Das lässt sich erreichen, " +"indem *tp_call* auf :c:func:`PyVectorcall_Call` gesetzt wird." + +#: ../../c-api/typeobj.rst:848 +msgid "" +"Before version 3.8, this slot was named ``tp_print``. In Python 2.x, it was " +"used for printing to a file. In Python 3.0 to 3.7, it was unused." +msgstr "" +"Vor Version 3.8 hieß dieser Slot ``tp_print``. In Python 2.x diente er der " +"Ausgabe in eine Datei. In Python 3.0 bis 3.7 war er unbenutzt." + +#: ../../c-api/typeobj.rst:854 +msgid "" +"Before version 3.12, it was not recommended for :ref:`mutable heap types " +"` to implement the vectorcall protocol. When a user " +"sets :attr:`~object.__call__` in Python code, only *tp_call* is updated, " +"likely making it inconsistent with the vectorcall function. Since 3.12, " +"setting ``__call__`` will disable vectorcall optimization by clearing " +"the :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag." +msgstr "" +"Vor Version 3.12 war es nicht empfohlen, dass :ref:`veränderliche Heap-Typen " +"` das vectorcall-Protokoll umsetzen. Setzt " +"jemand :attr:`~object.__call__` in Python-Code, wird nur *tp_call* " +"aktualisiert, womit es wahrscheinlich nicht mehr zur vectorcall-Funktion " +"passt. Seit 3.12 schaltet das Setzen von ``__call__`` die vectorcall-" +"Optimierung ab, indem es das Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` " +"löscht." + +#: ../../c-api/typeobj.rst:864 +msgid "" +"This field is always inherited. However, " +"the :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag is not always inherited. If " +"it's not set, then the subclass won't use :ref:`vectorcall `, " +"except when :c:func:`PyVectorcall_Call` is explicitly called." +msgstr "" +"Dieses Feld wird immer vererbt. Das " +"Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` wird allerdings nicht immer " +"vererbt. Ist es nicht gesetzt, verwendet die Unterklasse :ref:`vectorcall " +"` nicht, außer wenn :c:func:`PyVectorcall_Call` ausdrücklich " +"aufgerufen wird." + +#: ../../c-api/typeobj.rst:875 +msgid "An optional pointer to the get-attribute-string function." +msgstr "" +"Ein wahlfreier Zeiger auf die Funktion zum Lesen eines Attributs über eine " +"Zeichenkette." + +#: ../../c-api/typeobj.rst:877 +msgid "" +"This field is deprecated. When it is defined, it should point to a function " +"that acts the same as the :c:member:`~PyTypeObject.tp_getattro` function, " +"but taking a C string instead of a Python string object to give the " +"attribute name." +msgstr "" +"Dieses Feld ist veraltet. Ist es festgelegt, sollte es auf eine Funktion " +"zeigen, die sich genauso verhält wie die " +"Funktion :c:member:`~PyTypeObject.tp_getattro`, aber eine C-Zeichenkette " +"statt eines Python-Zeichenkettenobjekts für den Attributnamen nimmt." + +#: ../../c-api/typeobj.rst:883 ../../c-api/typeobj.rst:1091 +msgid "Group: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject.tp_getattro`" +msgstr "Gruppe: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject.tp_getattro`" + +#: ../../c-api/typeobj.rst:885 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_getattro`: a subtype inherits " +"both :c:member:`~PyTypeObject.tp_getattr` " +"and :c:member:`~PyTypeObject.tp_getattro` from its base type when the " +"subtype's :c:member:`~PyTypeObject.tp_getattr` " +"and :c:member:`~PyTypeObject.tp_getattro` are both ``NULL``." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_getattro` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_getattr` als " +"auch :c:member:`~PyTypeObject.tp_getattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_getattr` " +"und :c:member:`~PyTypeObject.tp_getattro` des Untertyps beide ``NULL`` sind." + +#: ../../c-api/typeobj.rst:894 ../../c-api/typeobj.rst:1106 +msgid "" +"An optional pointer to the function for setting and deleting attributes." +msgstr "" +"Ein wahlfreier Zeiger auf die Funktion zum Setzen und Löschen von Attributen." + +#: ../../c-api/typeobj.rst:896 +msgid "" +"This field is deprecated. When it is defined, it should point to a function " +"that acts the same as the :c:member:`~PyTypeObject.tp_setattro` function, " +"but taking a C string instead of a Python string object to give the " +"attribute name." +msgstr "" +"Dieses Feld ist veraltet. Ist es festgelegt, sollte es auf eine Funktion " +"zeigen, die sich genauso verhält wie die " +"Funktion :c:member:`~PyTypeObject.tp_setattro`, aber eine C-Zeichenkette " +"statt eines Python-Zeichenkettenobjekts für den Attributnamen nimmt." + +#: ../../c-api/typeobj.rst:902 ../../c-api/typeobj.rst:1119 +msgid "Group: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject.tp_setattro`" +msgstr "Gruppe: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject.tp_setattro`" + +#: ../../c-api/typeobj.rst:904 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_setattro`: a subtype inherits " +"both :c:member:`~PyTypeObject.tp_setattr` " +"and :c:member:`~PyTypeObject.tp_setattro` from its base type when the " +"subtype's :c:member:`~PyTypeObject.tp_setattr` " +"and :c:member:`~PyTypeObject.tp_setattro` are both ``NULL``." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_setattro` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_setattr` als " +"auch :c:member:`~PyTypeObject.tp_setattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_setattr` " +"und :c:member:`~PyTypeObject.tp_setattro` des Untertyps beide ``NULL`` sind." + +#: ../../c-api/typeobj.rst:911 +msgid "" +"Pointer to an additional structure that contains fields relevant only to " +"objects which implement :term:`awaitable` and :term:`asynchronous iterator` " +"protocols at the C-level. See :ref:`async-structs` for details." +msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die die Protokolle :term:`abwartbar ` " +"und :term:`asynchroner Iterator ` auf C-Ebene " +"umsetzen. Einzelheiten stehen unter :ref:`async-structs`." + +#: ../../c-api/typeobj.rst:915 +msgid "Formerly known as ``tp_compare`` and ``tp_reserved``." +msgstr "Früher bekannt als ``tp_compare`` und ``tp_reserved``." + +#: ../../c-api/typeobj.rst:920 +msgid "" +"The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the " +"contained fields are inherited individually." +msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_async` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." + +#: ../../c-api/typeobj.rst:930 +msgid "" +"An optional pointer to a function that implements the built-in " +"function :func:`repr`." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die die integrierte " +"Funktion :func:`repr` umsetzt." + +#: ../../c-api/typeobj.rst:933 +msgid "The signature is the same as for :c:func:`PyObject_Repr`::" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Repr`::" + +#: ../../c-api/typeobj.rst:935 +msgid "PyObject *tp_repr(PyObject *self);" +msgstr "PyObject *tp_repr(PyObject *self);" + +#: ../../c-api/typeobj.rst:937 +msgid "" +"The function must return a string or a Unicode object. Ideally, this " +"function should return a string that, when passed to :func:`eval`, given a " +"suitable environment, returns an object with the same value. If this is not " +"feasible, it should return a string starting with ``'<'`` and ending with " +"``'>'`` from which both the type and the value of the object can be deduced." +msgstr "" +"Die Funktion muss eine Zeichenkette oder ein Unicode-Objekt zurückgeben. Im " +"Idealfall sollte sie eine Zeichenkette zurückgeben, die -- an :func:`eval` " +"übergeben und in einer passenden Umgebung -- ein Objekt mit demselben Wert " +"ergibt. Ist das nicht machbar, sollte sie eine Zeichenkette zurückgeben, die " +"mit ``'<'`` beginnt und mit ``'>'`` endet und aus der sich sowohl der Typ " +"als auch der Wert des Objekts ableiten lassen." + +#: ../../c-api/typeobj.rst:948 ../../c-api/typeobj.rst:1029 +#: ../../c-api/typeobj.rst:1070 ../../c-api/typeobj.rst:1097 +#: ../../c-api/typeobj.rst:1125 ../../c-api/typeobj.rst:1170 +#: ../../c-api/typeobj.rst:1805 ../../c-api/typeobj.rst:1839 +#: ../../c-api/typeobj.rst:1969 ../../c-api/typeobj.rst:2002 +#: ../../c-api/typeobj.rst:2081 ../../c-api/typeobj.rst:2124 +#: ../../c-api/typeobj.rst:2146 ../../c-api/typeobj.rst:2187 +#: ../../c-api/typeobj.rst:2217 ../../c-api/typeobj.rst:2250 +msgid "**Default:**" +msgstr "**Vorgabe:**" + +#: ../../c-api/typeobj.rst:950 +msgid "" +"When this field is not set, a string of the form ``<%s object at %p>`` is " +"returned, where ``%s`` is replaced by the type name, and ``%p`` by the " +"object's memory address." +msgstr "" +"Ist dieses Feld nicht gesetzt, wird eine Zeichenkette der Form ``<%s object " +"at %p>`` zurückgegeben, wobei ``%s`` durch den Typnamen und ``%p`` durch die " +"Speicheradresse des Objekts ersetzt wird." + +#: ../../c-api/typeobj.rst:957 +msgid "" +"Pointer to an additional structure that contains fields relevant only to " +"objects which implement the number protocol. These fields are documented " +"in :ref:`number-structs`." +msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die das Zahlenprotokoll umsetzen. Diese Felder sind " +"unter :ref:`number-structs` dokumentiert." + +#: ../../c-api/typeobj.rst:963 +msgid "" +"The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the " +"contained fields are inherited individually." +msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_number` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." + +#: ../../c-api/typeobj.rst:969 +msgid "" +"Pointer to an additional structure that contains fields relevant only to " +"objects which implement the sequence protocol. These fields are documented " +"in :ref:`sequence-structs`." +msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die das Sequenzprotokoll umsetzen. Diese Felder sind " +"unter :ref:`sequence-structs` dokumentiert." + +#: ../../c-api/typeobj.rst:975 +msgid "" +"The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the " +"contained fields are inherited individually." +msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_sequence` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." + +#: ../../c-api/typeobj.rst:981 +msgid "" +"Pointer to an additional structure that contains fields relevant only to " +"objects which implement the mapping protocol. These fields are documented " +"in :ref:`mapping-structs`." +msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die das Mapping-Protokoll umsetzen. Diese Felder sind " +"unter :ref:`mapping-structs` dokumentiert." + +#: ../../c-api/typeobj.rst:987 +msgid "" +"The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the " +"contained fields are inherited individually." +msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_mapping` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." + +#: ../../c-api/typeobj.rst:997 +msgid "" +"An optional pointer to a function that implements the built-in " +"function :func:`hash`." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die die integrierte " +"Funktion :func:`hash` umsetzt." + +#: ../../c-api/typeobj.rst:1000 +msgid "The signature is the same as for :c:func:`PyObject_Hash`::" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Hash`::" + +#: ../../c-api/typeobj.rst:1002 +msgid "Py_hash_t tp_hash(PyObject *);" +msgstr "Py_hash_t tp_hash(PyObject *);" + +#: ../../c-api/typeobj.rst:1004 +msgid "" +"The value ``-1`` should not be returned as a normal return value; when an " +"error occurs during the computation of the hash value, the function should " +"set an exception and return ``-1``." +msgstr "" +"Der Wert ``-1`` sollte nicht als gewöhnlicher Rückgabewert verwendet werden. " +"Tritt bei der Berechnung des Hash-Werts ein Fehler auf, sollte die Funktion " +"eine Ausnahme setzen und ``-1`` zurückgeben." + +#: ../../c-api/typeobj.rst:1008 +msgid "" +"When this field is not set (*and* :c:member:`~PyTypeObject.tp_richcompare` " +"is not set), an attempt to take the hash of the object " +"raises :exc:`TypeError`. This is the same as setting it " +"to :c:func:`PyObject_HashNotImplemented`." +msgstr "" +"Ist dieses Feld nicht gesetzt " +"(*und* :c:member:`~PyTypeObject.tp_richcompare` ebenfalls nicht), löst der " +"Versuch, den Hash des Objekts zu bilden, ein :exc:`TypeError` aus. Das " +"entspricht dem Setzen auf :c:func:`PyObject_HashNotImplemented`." + +#: ../../c-api/typeobj.rst:1012 +msgid "" +"This field can be set explicitly to :c:func:`PyObject_HashNotImplemented` to " +"block inheritance of the hash method from a parent type. This is interpreted " +"as the equivalent of ``__hash__ = None`` at the Python level, causing " +"``isinstance(o, collections.Hashable)`` to correctly return ``False``. Note " +"that the converse is also true - setting ``__hash__ = None`` on a class at " +"the Python level will result in the ``tp_hash`` slot being set " +"to :c:func:`PyObject_HashNotImplemented`." +msgstr "" +"Dieses Feld lässt sich ausdrücklich " +"auf :c:func:`PyObject_HashNotImplemented` setzen, um das Erben der hash-" +"Methode von einem übergeordneten Typ zu unterbinden. Das wird als " +"Entsprechung zu ``__hash__ = None`` auf Python-Ebene ausgelegt und führt " +"dazu, dass ``isinstance(o, collections.Hashable)`` richtigerweise ``False`` " +"zurückgibt. Beachte, dass auch die Umkehrung gilt: ``__hash__ = None`` auf " +"Python-Ebene an einer Klasse zu setzen führt dazu, dass der Slot ``tp_hash`` " +"auf :c:func:`PyObject_HashNotImplemented` gesetzt wird." + +#: ../../c-api/typeobj.rst:1022 ../../c-api/typeobj.rst:1798 +msgid "Group: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject.tp_richcompare`" +msgstr "Gruppe: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject.tp_richcompare`" + +#: ../../c-api/typeobj.rst:1024 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_richcompare`: a subtype inherits both " +"of :c:member:`~PyTypeObject.tp_richcompare` " +"and :c:member:`~PyTypeObject.tp_hash`, when the " +"subtype's :c:member:`~PyTypeObject.tp_richcompare` " +"and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_richcompare` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_richcompare` als " +"auch :c:member:`~PyTypeObject.tp_hash`, " +"wenn :c:member:`~PyTypeObject.tp_richcompare` " +"und :c:member:`~PyTypeObject.tp_hash` des Untertyps beide ``NULL`` sind." + +#: ../../c-api/typeobj.rst:1031 +msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericHash`." +msgstr ":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericHash`." + +#: ../../c-api/typeobj.rst:1038 +msgid "" +"An optional pointer to a function that implements calling the object. This " +"should be ``NULL`` if the object is not callable. The signature is the same " +"as for :c:func:`PyObject_Call`::" +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die das Aufrufen des Objekts " +"umsetzt. Ist das Objekt nicht aufrufbar, sollte dies ``NULL`` sein. Die " +"Signatur ist dieselbe wie bei :c:func:`PyObject_Call`::" + +#: ../../c-api/typeobj.rst:1042 +msgid "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" +msgstr "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" + +#: ../../c-api/typeobj.rst:1053 +msgid "" +"An optional pointer to a function that implements the built-in " +"operation :func:`str`. (Note that :class:`str` is a type now, " +"and :func:`str` calls the constructor for that type. This constructor " +"calls :c:func:`PyObject_Str` to do the actual work, " +"and :c:func:`PyObject_Str` will call this handler.)" +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die den integrierten " +"Vorgang :func:`str` umsetzt. (Beachte, dass :class:`str` inzwischen ein Typ " +"ist und :func:`str` den Konstruktor dieses Typs aufruft. Dieser Konstruktor " +"ruft :c:func:`PyObject_Str` auf, um die eigentliche Arbeit zu erledigen, " +"und :c:func:`PyObject_Str` ruft diesen Handler auf.)" + +#: ../../c-api/typeobj.rst:1058 +msgid "The signature is the same as for :c:func:`PyObject_Str`::" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Str`::" + +#: ../../c-api/typeobj.rst:1060 +msgid "PyObject *tp_str(PyObject *self);" +msgstr "PyObject *tp_str(PyObject *self);" + +#: ../../c-api/typeobj.rst:1062 +msgid "" +"The function must return a string or a Unicode object. It should be a " +"\"friendly\" string representation of the object, as this is the " +"representation that will be used, among other things, by the :func:`print` " +"function." +msgstr "" +"Die Funktion muss eine Zeichenkette oder ein Unicode-Objekt zurückgeben. Sie " +"sollte eine „freundliche“ Textdarstellung des Objekts sein, denn das ist die " +"Darstellung, die unter anderem die Funktion :func:`print` verwendet." + +#: ../../c-api/typeobj.rst:1072 +msgid "" +"When this field is not set, :c:func:`PyObject_Repr` is called to return a " +"string representation." +msgstr "" +"Ist dieses Feld nicht gesetzt, wird :c:func:`PyObject_Repr` aufgerufen, um " +"eine Textdarstellung zurückzugeben." + +#: ../../c-api/typeobj.rst:1080 +msgid "An optional pointer to the get-attribute function." +msgstr "Ein wahlfreier Zeiger auf die Funktion zum Lesen eines Attributs." + +#: ../../c-api/typeobj.rst:1082 +msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_GetAttr`::" + +#: ../../c-api/typeobj.rst:1084 +msgid "PyObject *tp_getattro(PyObject *self, PyObject *attr);" +msgstr "PyObject *tp_getattro(PyObject *self, PyObject *attr);" + +#: ../../c-api/typeobj.rst:1086 +msgid "" +"It is usually convenient to set this field " +"to :c:func:`PyObject_GenericGetAttr`, which implements the normal way of " +"looking for object attributes." +msgstr "" +"Üblicherweise ist es praktisch, dieses Feld " +"auf :c:func:`PyObject_GenericGetAttr` zu setzen, was die gewöhnliche Art " +"umsetzt, Objektattribute nachzuschlagen." + +#: ../../c-api/typeobj.rst:1093 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_getattr`: a subtype inherits " +"both :c:member:`~PyTypeObject.tp_getattr` " +"and :c:member:`~PyTypeObject.tp_getattro` from its base type when the " +"subtype's :c:member:`~PyTypeObject.tp_getattr` " +"and :c:member:`~PyTypeObject.tp_getattro` are both ``NULL``." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_getattr` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_getattr` als " +"auch :c:member:`~PyTypeObject.tp_getattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_getattr` " +"und :c:member:`~PyTypeObject.tp_getattro` des Untertyps beide ``NULL`` sind." + +#: ../../c-api/typeobj.rst:1099 +msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`." +msgstr "" +":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericGetAttr`." + +#: ../../c-api/typeobj.rst:1108 +msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::" +msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_SetAttr`::" + +#: ../../c-api/typeobj.rst:1110 +msgid "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" +msgstr "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" + +#: ../../c-api/typeobj.rst:1112 +msgid "" +"In addition, setting *value* to ``NULL`` to delete an attribute must be " +"supported. It is usually convenient to set this field " +"to :c:func:`PyObject_GenericSetAttr`, which implements the normal way of " +"setting object attributes." +msgstr "" +"Außerdem muss unterstützt werden, dass *value* auf ``NULL`` gesetzt wird, um " +"ein Attribut zu löschen. Üblicherweise ist es praktisch, dieses Feld " +"auf :c:func:`PyObject_GenericSetAttr` zu setzen, was die gewöhnliche Art " +"umsetzt, Objektattribute zu setzen." + +#: ../../c-api/typeobj.rst:1121 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_setattr`: a subtype inherits " +"both :c:member:`~PyTypeObject.tp_setattr` " +"and :c:member:`~PyTypeObject.tp_setattro` from its base type when the " +"subtype's :c:member:`~PyTypeObject.tp_setattr` " +"and :c:member:`~PyTypeObject.tp_setattro` are both ``NULL``." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_setattr` vererbt: Ein Untertyp erbt " +"sowohl :c:member:`~PyTypeObject.tp_setattr` als " +"auch :c:member:`~PyTypeObject.tp_setattro` von seinem Basistyp, " +"wenn :c:member:`~PyTypeObject.tp_setattr` " +"und :c:member:`~PyTypeObject.tp_setattro` des Untertyps beide ``NULL`` sind." + +#: ../../c-api/typeobj.rst:1127 +msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`." +msgstr "" +":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericSetAttr`." + +#: ../../c-api/typeobj.rst:1132 +msgid "" +"Pointer to an additional structure that contains fields relevant only to " +"objects which implement the buffer interface. These fields are documented " +"in :ref:`buffer-structs`." +msgstr "" +"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " +"Bedeutung sind, die die Puffer-Schnittstelle umsetzen. Diese Felder sind " +"unter :ref:`buffer-structs` dokumentiert." + +#: ../../c-api/typeobj.rst:1138 +msgid "" +"The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the " +"contained fields are inherited individually." +msgstr "" +"Das Feld :c:member:`~PyTypeObject.tp_as_buffer` wird nicht vererbt, die " +"enthaltenen Felder werden aber einzeln vererbt." + +#: ../../c-api/typeobj.rst:1144 +msgid "" +"See :c:macro:`Py_tp_flags` for the corresponding :c:member:`Slot ID " +"`." +msgstr "" +"Die zugehörige :c:member:`Slot-ID ` steht " +"unter :c:macro:`Py_tp_flags`." + +#: ../../c-api/typeobj.rst:1147 +msgid "" +"This field is a bit mask of various flags. Some flags indicate variant " +"semantics for certain situations; others are used to indicate that certain " +"fields in the type object (or in the extension structures referenced " +"via :c:member:`~PyTypeObject.tp_as_number`, :c:member:`~PyTypeObject.tp_as_sequence`, :c:member:`~PyTypeObject.tp_as_mapping`, " +"and :c:member:`~PyTypeObject.tp_as_buffer`) that were historically not " +"always present are valid; if such a flag bit is clear, the type fields it " +"guards must not be accessed and must be considered to have a zero or " +"``NULL`` value instead." +msgstr "" +"Dieses Feld ist eine Bitmaske verschiedener Flags. Manche Flags zeigen " +"abweichendes Verhalten in bestimmten Situationen an, andere zeigen an, dass " +"bestimmte Felder im Typobjekt (oder in den " +"über :c:member:`~PyTypeObject.tp_as_number`, :c:member:`~PyTypeObject.tp_as_sequence`, :c:member:`~PyTypeObject.tp_as_mapping` " +"und :c:member:`~PyTypeObject.tp_as_buffer` referenzierten " +"Erweiterungsstrukturen), die früher nicht immer vorhanden waren, gültig " +"sind. Ist ein solches Flag-Bit nicht gesetzt, darf auf die Typfelder, die es " +"absichert, nicht zugegriffen werden. Sie sind stattdessen als null oder " +"``NULL`` zu betrachten." + +#: ../../c-api/typeobj.rst:1157 +msgid "" +"Inheritance of this field is complicated. Most flag bits are inherited " +"individually, i.e. if the base type has a flag bit set, the subtype inherits " +"this flag bit. The flag bits that pertain to extension structures are " +"strictly inherited if the extension structure is inherited, i.e. the base " +"type's value of the flag bit is copied into the subtype together with a " +"pointer to the extension structure. The :c:macro:`Py_TPFLAGS_HAVE_GC` flag " +"bit is inherited together with the :c:member:`~PyTypeObject.tp_traverse` " +"and :c:member:`~PyTypeObject.tp_clear` fields, i.e. if " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is clear in the subtype and " +"the :c:member:`~PyTypeObject.tp_traverse` " +"and :c:member:`~PyTypeObject.tp_clear` fields in the subtype exist and have " +"``NULL`` values." +msgstr "" +"Die Vererbung dieses Feldes ist kompliziert. Die meisten Flag-Bits werden " +"einzeln vererbt, das heißt: Ist ein Flag-Bit im Basistyp gesetzt, erbt der " +"Untertyp dieses Flag-Bit. Die Flag-Bits, die Erweiterungsstrukturen " +"betreffen, werden streng dann vererbt, wenn die Erweiterungsstruktur vererbt " +"wird, das heißt: Der Wert des Flag-Bits im Basistyp wird zusammen mit einem " +"Zeiger auf die Erweiterungsstruktur in den Untertyp kopiert. Das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` wird gemeinsam mit den " +"Feldern :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` vererbt, also dann, wenn das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` im Untertyp nicht gesetzt ist und die " +"Felder :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` im Untertyp vorhanden sind und " +"``NULL``-Werte haben." + +#: ../../c-api/typeobj.rst:1172 +msgid "" +":c:data:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | " +"Py_TPFLAGS_BASETYPE``." +msgstr "" +":c:data:`PyBaseObject_Type` verwendet ``Py_TPFLAGS_DEFAULT | " +"Py_TPFLAGS_BASETYPE``." + +#: ../../c-api/typeobj.rst:1175 +msgid "**Bit Masks:**" +msgstr "**Bitmasken:**" + +#: ../../c-api/typeobj.rst:1179 +msgid "" +"The following bit masks are currently defined; these can be ORed together " +"using the ``|`` operator to form the value of " +"the :c:member:`~PyTypeObject.tp_flags` field. The " +"macro :c:func:`PyType_HasFeature` takes a type and a flags value, *tp* and " +"*f*, and checks whether ``tp->tp_flags & f`` is non-zero." +msgstr "" +"Derzeit sind die folgenden Bitmasken festgelegt. Sie lassen sich über den " +"Operator ``|`` miteinander verodern, um den Wert des " +"Feldes :c:member:`~PyTypeObject.tp_flags` zu bilden. Das " +"Makro :c:func:`PyType_HasFeature` nimmt einen Typ und einen Flag-Wert, *tp* " +"und *f*, und prüft, ob ``tp->tp_flags & f`` ungleich null ist." + +#: ../../c-api/typeobj.rst:1186 +msgid "" +"This bit is set when the type object itself is allocated on the heap, for " +"example, types created dynamically using :c:func:`PyType_FromSpec`. In this " +"case, the :c:member:`~PyObject.ob_type` field of its instances is considered " +"a reference to the type, and the type object is INCREF'ed when a new " +"instance is created, and DECREF'ed when an instance is destroyed (this does " +"not apply to instances of subtypes; only the type referenced by the " +"instance's ob_type gets INCREF'ed or DECREF'ed). Heap types should " +"also :ref:`support garbage collection ` as they " +"can form a reference cycle with their own module object." +msgstr "" +"Dieses Bit ist gesetzt, wenn das Typobjekt selbst auf dem Heap angelegt ist, " +"zum Beispiel bei Typen, die dynamisch über :c:func:`PyType_FromSpec` erzeugt " +"werden. In diesem Fall gilt das Feld :c:member:`~PyObject.ob_type` seiner " +"Instanzen als Referenz auf den Typ, und das Typobjekt wird mit INCREF " +"versehen, wenn eine neue Instanz erzeugt wird, und mit DECREF, wenn eine " +"Instanz zerstört wird (das gilt nicht für Instanzen von Untertypen, sondern " +"nur für den Typ, auf den das ob_type der Instanz verweist, bekommt INCREF " +"oder DECREF). Heap-Typen sollten außerdem :ref:`die Speicherbereinigung " +"unterstützen `, da sie mit ihrem eigenen " +"Modulobjekt einen Referenzzyklus bilden können." + +#: ../../c-api/typeobj.rst:1197 ../../c-api/typeobj.rst:1208 +#: ../../c-api/typeobj.rst:1218 ../../c-api/typeobj.rst:1228 +#: ../../c-api/typeobj.rst:1260 +msgid "???" +msgstr "???" + +#: ../../c-api/typeobj.rst:1202 +msgid "" +"This bit is set when the type can be used as the base type of another type. " +"If this bit is clear, the type cannot be subtyped (similar to a \"final\" " +"class in Java)." +msgstr "" +"Dieses Bit ist gesetzt, wenn der Typ als Basistyp eines anderen Typs " +"verwendet werden kann. Ist dieses Bit nicht gesetzt, lässt sich vom Typ " +"keine Unterklasse bilden (ähnlich einer „final“-Klasse in Java)." + +#: ../../c-api/typeobj.rst:1213 +msgid "" +"This bit is set when the type object has been fully initialized " +"by :c:func:`PyType_Ready`." +msgstr "" +"Dieses Bit ist gesetzt, wenn das Typobjekt von :c:func:`PyType_Ready` " +"vollständig initialisiert wurde." + +#: ../../c-api/typeobj.rst:1223 +msgid "" +"This bit is set while :c:func:`PyType_Ready` is in the process of " +"initializing the type object." +msgstr "" +"Dieses Bit ist gesetzt, während :c:func:`PyType_Ready` das Typobjekt gerade " +"initialisiert." + +#: ../../c-api/typeobj.rst:1233 +msgid "" +"This bit is set when the object supports garbage collection. If this bit is " +"set, memory for new instances (see :c:member:`~PyTypeObject.tp_alloc`) must " +"be allocated using :c:macro:`PyObject_GC_New` " +"or :c:func:`PyType_GenericAlloc` and deallocated " +"(see :c:member:`~PyTypeObject.tp_free`) using :c:func:`PyObject_GC_Del`. " +"More information in section :ref:`supporting-cycle-detection`." +msgstr "" +"Dieses Bit ist gesetzt, wenn das Objekt die Speicherbereinigung unterstützt. " +"Ist dieses Bit gesetzt, muss Speicher für neue Instanzen " +"(siehe :c:member:`~PyTypeObject.tp_alloc`) über :c:macro:`PyObject_GC_New` " +"oder :c:func:`PyType_GenericAlloc` angefordert und " +"(siehe :c:member:`~PyTypeObject.tp_free`) über :c:func:`PyObject_GC_Del` " +"freigegeben werden. Mehr dazu im Abschnitt :ref:`supporting-cycle-detection`." + +#: ../../c-api/typeobj.rst:1242 ../../c-api/typeobj.rst:1585 +#: ../../c-api/typeobj.rst:1731 +msgid "Group: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject.tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" +msgstr "Gruppe: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject.tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" + +#: ../../c-api/typeobj.rst:1244 +msgid "" +"The :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with " +"the :c:member:`~PyTypeObject.tp_traverse` " +"and :c:member:`~PyTypeObject.tp_clear` fields, i.e. if " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is clear in the subtype and " +"the :c:member:`~PyTypeObject.tp_traverse` " +"and :c:member:`~PyTypeObject.tp_clear` fields in the subtype exist and have " +"``NULL`` values." +msgstr "" +"Das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_GC` wird gemeinsam mit den " +"Feldern :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` vererbt, also dann, wenn das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` im Untertyp nicht gesetzt ist und die " +"Felder :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` im Untertyp vorhanden sind und " +"``NULL``-Werte haben." + +#: ../../c-api/typeobj.rst:1254 +msgid "" +"This is a bitmask of all the bits that pertain to the existence of certain " +"fields in the type object and its extension structures. Currently, it " +"includes the following bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." +msgstr "" +"Das ist eine Bitmaske aller Bits, die das Vorhandensein bestimmter Felder im " +"Typobjekt und seinen Erweiterungsstrukturen betreffen. Derzeit umfasst sie " +"die folgenden Bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." + +#: ../../c-api/typeobj.rst:1265 +msgid "This bit indicates that objects behave like unbound methods." +msgstr "" +"Dieses Bit zeigt an, dass Objekte sich wie ungebundene Methoden verhalten." + +#: ../../c-api/typeobj.rst:1267 +msgid "If this flag is set for ``type(meth)``, then:" +msgstr "Ist dieses Flag für ``type(meth)`` gesetzt, gilt:" + +#: ../../c-api/typeobj.rst:1269 +msgid "" +"``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be " +"equivalent to ``meth(obj, *args, **kwds)``." +msgstr "" +"``meth.__get__(obj, cls)(*args, **kwds)`` (mit ``obj`` nicht None) muss " +"gleichbedeutend sein mit ``meth(obj, *args, **kwds)``." + +#: ../../c-api/typeobj.rst:1272 +msgid "" +"``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to " +"``meth(*args, **kwds)``." +msgstr "" +"``meth.__get__(None, cls)(*args, **kwds)`` muss gleichbedeutend sein mit " +"``meth(*args, **kwds)``." + +#: ../../c-api/typeobj.rst:1275 +msgid "" +"This flag enables an optimization for typical method calls like " +"``obj.meth()``: it avoids creating a temporary \"bound method\" object for " +"``obj.meth``." +msgstr "" +"Dieses Flag ermöglicht eine Optimierung für typische Methodenaufrufe wie " +"``obj.meth()``: Es vermeidet, für ``obj.meth`` ein vorübergehendes Objekt " +"für die „gebundene Methode“ zu erzeugen." + +#: ../../c-api/typeobj.rst:1283 +msgid "" +"This flag is never inherited by types without " +"the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` flag set. For extension types, it " +"is inherited whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited." +msgstr "" +"Dieses Flag wird nie an Typen vererbt, bei denen das " +"Flag :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` nicht gesetzt ist. Bei " +"Erweiterungstypen wird es immer dann vererbt, " +"wenn :c:member:`~PyTypeObject.tp_descr_get` vererbt wird." + +#: ../../c-api/typeobj.rst:1289 +msgid "" +"This bit indicates that instances of the class have " +"a :attr:`~object.__dict__` attribute, and that the space for the dictionary " +"is managed by the VM." +msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse ein " +"Attribut :attr:`~object.__dict__` haben und dass die VM den Platz für das " +"Dictionary verwaltet." + +#: ../../c-api/typeobj.rst:1292 ../../c-api/typeobj.rst:1310 +msgid "If this flag is set, :c:macro:`Py_TPFLAGS_HAVE_GC` must also be set." +msgstr "" +"Ist dieses Flag gesetzt, muss auch :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt " +"sein." + +#: ../../c-api/typeobj.rst:1294 +msgid "" +"The type traverse function must call :c:func:`PyObject_VisitManagedDict` and " +"its clear function must call :c:func:`PyObject_ClearManagedDict`." +msgstr "" +"Die traverse-Funktion des Typs muss :c:func:`PyObject_VisitManagedDict` " +"aufrufen und seine clear-Funktion :c:func:`PyObject_ClearManagedDict`." + +#: ../../c-api/typeobj.rst:1301 +msgid "" +"This flag is inherited unless the :c:member:`~PyTypeObject.tp_dictoffset` " +"field is set in a superclass." +msgstr "" +"Dieses Flag wird vererbt, sofern das " +"Feld :c:member:`~PyTypeObject.tp_dictoffset` nicht in einer Oberklasse " +"gesetzt ist." + +#: ../../c-api/typeobj.rst:1307 +msgid "" +"This bit indicates that instances of the class should be weakly " +"referenceable." +msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse schwach referenzierbar sein " +"sollen." + +#: ../../c-api/typeobj.rst:1316 +msgid "" +"This flag is inherited unless " +"the :c:member:`~PyTypeObject.tp_weaklistoffset` field is set in a superclass." +msgstr "" +"Dieses Flag wird vererbt, sofern das " +"Feld :c:member:`~PyTypeObject.tp_weaklistoffset` nicht in einer Oberklasse " +"gesetzt ist." + +#: ../../c-api/typeobj.rst:1322 +msgid "" +"These bits indicate that the VM will manage some fields by storing them " +"before the object. Currently, this macro is equivalent " +"to :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`." +msgstr "" +"Diese Bits zeigen an, dass die VM einige Felder verwaltet, indem sie sie vor " +"dem Objekt ablegt. Derzeit entspricht dieses " +"Makro :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`." + +#: ../../c-api/typeobj.rst:1326 +msgid "" +"This macro value relies on the implementation of the VM, so its value is not " +"stable and may change in a future version. Prefer using individual flags " +"instead." +msgstr "" +"Der Wert dieses Makros hängt von der Umsetzung der VM ab, er ist deshalb " +"nicht stabil und kann sich in einer künftigen Version ändern. Verwende " +"besser die einzelnen Flags." + +#: ../../c-api/typeobj.rst:1335 +msgid "" +"Only usable with variable-size types, i.e. ones with non-" +"zero :c:member:`~PyTypeObject.tp_itemsize`." +msgstr "" +"Nur bei Typen veränderlicher Größe verwendbar, also solchen mit " +"einem :c:member:`~PyTypeObject.tp_itemsize` ungleich null." + +#: ../../c-api/typeobj.rst:1338 +msgid "" +"Indicates that the variable-sized portion of an instance of this type is at " +"the end of the instance's memory area, at an offset of ``Py_TYPE(obj)-" +">tp_basicsize`` (which may be different in each subclass)." +msgstr "" +"Zeigt an, dass der Teil veränderlicher Größe einer Instanz dieses Typs am " +"Ende des Speicherbereichs der Instanz liegt, beim Versatz ``Py_TYPE(obj)-" +">tp_basicsize`` (der in jeder Unterklasse anders sein kann)." + +#: ../../c-api/typeobj.rst:1343 +msgid "" +"When setting this flag, be sure that all superclasses either use this memory " +"layout, or are not variable-sized. Python does not check this." +msgstr "" +"Vergewissere dich beim Setzen dieses Flags, dass alle Oberklassen entweder " +"denselben Speicheraufbau verwenden oder nicht von veränderlicher Größe sind. " +"Python prüft das nicht." + +#: ../../c-api/typeobj.rst:1351 +msgid "This flag is inherited." +msgstr "Dieses Flag wird vererbt." + +#: ../../c-api/typeobj.rst:1365 +msgid "" +"Functions such as :c:func:`PyLong_Check` will " +"call :c:func:`PyType_FastSubclass` with one of these flags to quickly " +"determine if a type is a subclass of a built-in type; such specific checks " +"are faster than a generic check, like :c:func:`PyObject_IsInstance`. Custom " +"types that inherit from built-ins should have " +"their :c:member:`~PyTypeObject.tp_flags` set appropriately, or the code that " +"interacts with such types will behave differently depending on what kind of " +"check is used." +msgstr "" +"Funktionen wie :c:func:`PyLong_Check` rufen :c:func:`PyType_FastSubclass` " +"mit einem dieser Flags auf, um schnell festzustellen, ob ein Typ eine " +"Unterklasse eines integrierten Typs ist. Solche gezielten Prüfungen sind " +"schneller als eine allgemeine Prüfung wie :c:func:`PyObject_IsInstance`. Bei " +"eigenen Typen, die von integrierten Typen erben, " +"sollte :c:member:`~PyTypeObject.tp_flags` passend gesetzt sein, sonst " +"verhält sich der Code, der mit solchen Typen umgeht, je nach verwendeter " +"Prüfung unterschiedlich." + +#: ../../c-api/typeobj.rst:1376 +msgid "" +"This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is " +"present in the type structure." +msgstr "" +"Dieses Bit ist gesetzt, wenn der Slot :c:member:`~PyTypeObject.tp_finalize` " +"in der Typstruktur vorhanden ist." + +#: ../../c-api/typeobj.rst:1381 +msgid "" +"This flag isn't necessary anymore, as the interpreter assumes " +"the :c:member:`~PyTypeObject.tp_finalize` slot is always present in the type " +"structure." +msgstr "" +"Dieses Flag ist nicht mehr nötig, weil der Interpreter davon ausgeht, dass " +"der Slot :c:member:`~PyTypeObject.tp_finalize` in der Typstruktur immer " +"vorhanden ist." + +#: ../../c-api/typeobj.rst:1392 +msgid "" +"This bit is set when the class implements the :ref:`vectorcall protocol " +"`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for " +"details." +msgstr "" +"Dieses Bit ist gesetzt, wenn die Klasse das :ref:`vectorcall-Protokoll " +"` umsetzt. Einzelheiten stehen " +"unter :c:member:`~PyTypeObject.tp_vectorcall_offset`." + +#: ../../c-api/typeobj.rst:1398 +msgid "" +"This bit is inherited if :c:member:`~PyTypeObject.tp_call` is also inherited." +msgstr "" +"Dieses Bit wird vererbt, wenn auch :c:member:`~PyTypeObject.tp_call` vererbt " +"wird." + +#: ../../c-api/typeobj.rst:1401 +msgid "as ``_Py_TPFLAGS_HAVE_VECTORCALL``" +msgstr "als ``_Py_TPFLAGS_HAVE_VECTORCALL``" + +#: ../../c-api/typeobj.rst:1405 +msgid "" +"Renamed to the current name, without the leading underscore. The old " +"provisional name is :term:`soft deprecated`." +msgstr "" +"Auf den jetzigen Namen umbenannt, ohne den führenden Unterstrich. Der alte " +"vorläufige Name ist :term:`sanft abgekündigt `." + +#: ../../c-api/typeobj.rst:1410 +msgid "" +"This flag is now removed from a class when the " +"class's :py:meth:`~object.__call__` method is reassigned." +msgstr "" +"Dieses Flag wird jetzt von einer Klasse entfernt, wenn die " +"Methode :py:meth:`~object.__call__` der Klasse neu zugewiesen wird." + +#: ../../c-api/typeobj.rst:1413 +msgid "This flag can now be inherited by mutable classes." +msgstr "Dieses Flag kann jetzt von veränderlichen Klassen geerbt werden." + +#: ../../c-api/typeobj.rst:1417 +msgid "" +"This bit is set for type objects that are immutable: type attributes cannot " +"be set nor deleted." +msgstr "" +"Dieses Bit ist bei Typobjekten gesetzt, die unveränderlich sind: " +"Typattribute lassen sich weder setzen noch löschen." + +#: ../../c-api/typeobj.rst:1419 +msgid "" +":c:func:`PyType_Ready` automatically applies this flag to :ref:`static types " +"`." +msgstr "" +":c:func:`PyType_Ready` setzt dieses Flag bei :ref:`statischen Typen ` automatisch." + +#: ../../c-api/typeobj.rst:1424 ../../c-api/typeobj.rst:1533 +#: ../../c-api/typeobj.rst:1545 +msgid "This flag is not inherited." +msgstr "Dieses Flag wird nicht vererbt." + +#: ../../c-api/typeobj.rst:1430 +msgid "" +"Disallow creating instances of the type: " +"set :c:member:`~PyTypeObject.tp_new` to NULL and don't create the " +"``__new__`` key in the type dictionary." +msgstr "" +"Verbietet das Erzeugen von Instanzen des Typs: Es " +"setzt :c:member:`~PyTypeObject.tp_new` auf NULL und legt den Schlüssel " +"``__new__`` im Dictionary des Typs nicht an." + +#: ../../c-api/typeobj.rst:1434 +msgid "" +"The flag must be set before creating the type, not after. For example, it " +"must be set before :c:func:`PyType_Ready` is called on the type." +msgstr "" +"Das Flag muss gesetzt werden, bevor der Typ erzeugt wird, nicht danach. Es " +"muss zum Beispiel gesetzt sein, bevor :c:func:`PyType_Ready` auf dem Typ " +"aufgerufen wird." + +#: ../../c-api/typeobj.rst:1437 +msgid "" +"The flag is set automatically on :ref:`static types ` " +"if :c:member:`~PyTypeObject.tp_base` is NULL or ``&PyBaseObject_Type`` " +"and :c:member:`~PyTypeObject.tp_new` is NULL." +msgstr "" +"Bei :ref:`statischen Typen ` wird das Flag automatisch " +"gesetzt, wenn :c:member:`~PyTypeObject.tp_base` NULL oder " +"``&PyBaseObject_Type`` ist und :c:member:`~PyTypeObject.tp_new` NULL ist." + +#: ../../c-api/typeobj.rst:1443 +msgid "" +"This flag is not inherited. However, subclasses will not be instantiable " +"unless they provide a non-NULL :c:member:`~PyTypeObject.tp_new` (which is " +"only possible via the C API)." +msgstr "" +"Dieses Flag wird nicht vererbt. Unterklassen lassen sich allerdings nur dann " +"instanziieren, wenn sie ein :c:member:`~PyTypeObject.tp_new` ungleich NULL " +"bereitstellen (was nur über die C-API möglich ist)." + +#: ../../c-api/typeobj.rst:1450 +msgid "" +"To disallow instantiating a class directly but allow instantiating its " +"subclasses (e.g. for an :term:`abstract base class`), do not use this flag. " +"Instead, make :c:member:`~PyTypeObject.tp_new` only succeed for subclasses." +msgstr "" +"Um das unmittelbare Instanziieren einer Klasse zu verbieten, das " +"Instanziieren ihrer Unterklassen aber zu erlauben (etwa bei " +"einer :term:`abstrakten Basisklasse `), verwende dieses " +"Flag nicht. Lass stattdessen :c:member:`~PyTypeObject.tp_new` nur bei " +"Unterklassen gelingen." + +#: ../../c-api/typeobj.rst:1461 +msgid "" +"This bit indicates that instances of the class may match mapping patterns " +"when used as the subject of a :keyword:`match` block. It is automatically " +"set when registering or subclassing :class:`collections.abc.Mapping`, and " +"unset when registering :class:`collections.abc.Sequence`." +msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse auf Mapping-Muster passen " +"können, wenn sie als Gegenstand eines :keyword:`match`-Blocks verwendet " +"werden. Es wird beim Registrieren oder Ableiten " +"von :class:`collections.abc.Mapping` automatisch gesetzt und beim " +"Registrieren von :class:`collections.abc.Sequence` gelöscht." + +#: ../../c-api/typeobj.rst:1468 ../../c-api/typeobj.rst:1490 +msgid "" +":c:macro:`Py_TPFLAGS_MAPPING` and :c:macro:`Py_TPFLAGS_SEQUENCE` are " +"mutually exclusive; it is an error to enable both flags simultaneously." +msgstr "" +":c:macro:`Py_TPFLAGS_MAPPING` und :c:macro:`Py_TPFLAGS_SEQUENCE` schließen " +"einander aus. Beide Flags gleichzeitig einzuschalten ist ein Fehler." + +#: ../../c-api/typeobj.rst:1473 +msgid "" +"This flag is inherited by types that do not already " +"set :c:macro:`Py_TPFLAGS_SEQUENCE`." +msgstr "" +"Dieses Flag wird an Typen vererbt, die nicht " +"bereits :c:macro:`Py_TPFLAGS_SEQUENCE` setzen." + +#: ../../c-api/typeobj.rst:1476 ../../c-api/typeobj.rst:1498 +msgid ":pep:`634` -- Structural Pattern Matching: Specification" +msgstr ":pep:`634` -- Structural Pattern Matching: Specification" + +#: ../../c-api/typeobj.rst:1483 +msgid "" +"This bit indicates that instances of the class may match sequence patterns " +"when used as the subject of a :keyword:`match` block. It is automatically " +"set when registering or subclassing :class:`collections.abc.Sequence`, and " +"unset when registering :class:`collections.abc.Mapping`." +msgstr "" +"Dieses Bit zeigt an, dass Instanzen der Klasse auf Sequenzmuster passen " +"können, wenn sie als Gegenstand eines :keyword:`match`-Blocks verwendet " +"werden. Es wird beim Registrieren oder Ableiten " +"von :class:`collections.abc.Sequence` automatisch gesetzt und beim " +"Registrieren von :class:`collections.abc.Mapping` gelöscht." + +#: ../../c-api/typeobj.rst:1495 +msgid "" +"This flag is inherited by types that do not already " +"set :c:macro:`Py_TPFLAGS_MAPPING`." +msgstr "" +"Dieses Flag wird an Typen vererbt, die nicht " +"bereits :c:macro:`Py_TPFLAGS_MAPPING` setzen." + +#: ../../c-api/typeobj.rst:1505 +msgid "" +"Internal. Do not set or unset this flag. To indicate that a class has " +"changed call :c:func:`PyType_Modified`" +msgstr "" +"Intern. Setze oder lösche dieses Flag nicht. Um anzuzeigen, dass eine Klasse " +"sich geändert hat, rufe :c:func:`PyType_Modified` auf." + +#: ../../c-api/typeobj.rst:1509 +msgid "" +"This flag is present in header files, but is not be used. It will be removed " +"in a future version of CPython" +msgstr "" +"Dieses Flag ist in Header-Dateien vorhanden, wird aber nicht verwendet. Es " +"wird in einer künftigen Version von CPython entfernt." + +#: ../../c-api/typeobj.rst:1515 +msgid "" +"This macro does nothing. Historically, this would indicate that " +"the :c:member:`~PyTypeObject.tp_version_tag` field was available and " +"initialized." +msgstr "" +"Dieses Makro tut nichts. Früher zeigte es an, dass das " +"Feld :c:member:`~PyTypeObject.tp_version_tag` verfügbar und initialisiert " +"war." + +#: ../../c-api/typeobj.rst:1525 +msgid "" +"This bit indicates that instances of this type will have an \"inline " +"values\" array (containing the object's attributes) placed directly after " +"the end of the object." +msgstr "" +"Dieses Bit zeigt an, dass Instanzen dieses Typs ein Array mit „Inline-" +"Werten“ haben (das die Attribute des Objekts enthält), das unmittelbar " +"hinter dem Ende des Objekts liegt." + +#: ../../c-api/typeobj.rst:1529 +msgid "This requires that :c:macro:`Py_TPFLAGS_HAVE_GC` is set." +msgstr "Das setzt voraus, dass :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt ist." + +#: ../../c-api/typeobj.rst:1540 +msgid "" +"This bit indicates that this is an abstract type and therefore cannot be " +"instantiated." +msgstr "" +"Dieses Bit zeigt an, dass dies ein abstrakter Typ ist und sich deshalb nicht " +"instanziieren lässt." + +#: ../../c-api/typeobj.rst:1548 +msgid ":mod:`abc`" +msgstr ":mod:`abc`" + +#: ../../c-api/typeobj.rst:1553 +msgid "" +"Internal. Do not set or unset this flag. Historically, this was a reserved " +"flag for use in Stackless Python." +msgstr "" +"Intern. Setze oder lösche dieses Flag nicht. Früher war das ein reserviertes " +"Flag zur Verwendung in Stackless Python." + +#: ../../c-api/typeobj.rst:1557 +msgid "" +"This flag is present in header files, but is not be used. This may be " +"removed in a future version of CPython." +msgstr "" +"Dieses Flag ist in Header-Dateien vorhanden, wird aber nicht verwendet. Es " +"wird möglicherweise in einer künftigen Version von CPython entfernt." + +#: ../../c-api/typeobj.rst:1565 +msgid "" +"An optional pointer to a NUL-terminated C string giving the docstring for " +"this type object. This is exposed as the :attr:`~type.__doc__` attribute on " +"the type and instances of the type." +msgstr "" +"Ein wahlfreier Zeiger auf eine NUL-terminierte C-Zeichenkette mit dem " +"Docstring für dieses Typobjekt. Er wird als Attribut :attr:`~type.__doc__` " +"am Typ und an den Instanzen des Typs nach außen gegeben." + +#: ../../c-api/typeobj.rst:1571 +msgid "This field is *not* inherited by subtypes." +msgstr "Dieses Feld wird *nicht* an Untertypen vererbt." + +#: ../../c-api/typeobj.rst:1578 +msgid "" +"An optional pointer to a traversal function for the garbage collector. This " +"is only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set." +msgstr "" +"Ein wahlfreier Zeiger auf eine traverse-Funktion für die " +"Speicherbereinigung. Sie wird nur verwendet, wenn das Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt ist." + +#: ../../c-api/typeobj.rst:1581 +msgid "See :ref:`gc-traversal` for documentation." +msgstr "Die Dokumentation dazu steht unter :ref:`gc-traversal`." + +#: ../../c-api/typeobj.rst:1587 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_clear` and " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag " +"bit, :c:member:`~PyTypeObject.tp_traverse`, " +"and :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type " +"if they are all zero in the subtype." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_clear` und dem Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` vererbt: Das Flag-" +"Bit, :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` werden alle vom Basistyp geerbt, wenn " +"sie im Untertyp alle null sind." + +#: ../../c-api/typeobj.rst:1597 +msgid "An optional pointer to a clear function. The signature is::" +msgstr "Ein wahlfreier Zeiger auf eine clear-Funktion. Die Signatur lautet::" + +#: ../../c-api/typeobj.rst:1599 +msgid "int tp_clear(PyObject *);" +msgstr "int tp_clear(PyObject *);" + +#: ../../c-api/typeobj.rst:1601 +msgid "" +"The purpose of this function is to break reference cycles that are causing " +"a :term:`cyclic isolate` so that the objects can be safely destroyed. A " +"cleared object is a partially destroyed object; the object is not obligated " +"to satisfy design invariants held during normal use." +msgstr "" +"Der Zweck dieser Funktion ist es, Referenzzyklen aufzubrechen, die " +"ein :term:`zyklisches Isolat ` verursachen, damit die " +"Objekte gefahrlos zerstört werden können. Ein geleertes Objekt ist ein " +"teilweise zerstörtes Objekt. Es ist nicht verpflichtet, die " +"Entwurfsinvarianten einzuhalten, die im gewöhnlichen Betrieb gelten." + +#: ../../c-api/typeobj.rst:1606 +msgid "" +":c:member:`!tp_clear` does not need to delete references to objects that " +"can't participate in reference cycles, such as Python strings or Python " +"integers. However, it may be convenient to clear all references, and write " +"the type's :c:member:`~PyTypeObject.tp_dealloc` function to " +"invoke :c:member:`!tp_clear` to avoid code duplication. (Beware " +"that :c:member:`!tp_clear` might have already been called. Prefer calling " +"idempotent functions like :c:func:`Py_CLEAR`.)" +msgstr "" +":c:member:`!tp_clear` muss keine Referenzen auf Objekte löschen, die nicht " +"an Referenzzyklen teilnehmen können, etwa Python-Zeichenketten oder ganze " +"Zahlen. Es kann aber bequem sein, alle Referenzen zu leeren und die " +"Funktion :c:member:`~PyTypeObject.tp_dealloc` des Typs so zu schreiben, dass " +"sie :c:member:`!tp_clear` aufruft, um doppelten Code zu vermeiden. (Sei dir " +"bewusst, dass :c:member:`!tp_clear` bereits aufgerufen worden sein kann. " +"Rufe besser idempotente Funktionen wie :c:func:`Py_CLEAR` auf.)" + +#: ../../c-api/typeobj.rst:1614 +msgid "" +"Any non-trivial cleanup should be performed " +"in :c:member:`~PyTypeObject.tp_finalize` instead of :c:member:`!tp_clear`." +msgstr "" +"Jedes nicht triviale Aufräumen sollte " +"in :c:member:`~PyTypeObject.tp_finalize` erfolgen statt in :c:member:`!" +"tp_clear`." + +#: ../../c-api/typeobj.rst:1619 +msgid "" +"If :c:member:`!tp_clear` fails to break a reference cycle then the objects " +"in the :term:`cyclic isolate` may remain indefinitely uncollectable " +"(\"leak\"). See :data:`gc.garbage`." +msgstr "" +"Gelingt es :c:member:`!tp_clear` nicht, einen Referenzzyklus aufzubrechen, " +"bleiben die Objekte im :term:`zyklischen Isolat ` " +"möglicherweise auf Dauer nicht einsammelbar („Leck“). " +"Siehe :data:`gc.garbage`." + +#: ../../c-api/typeobj.rst:1625 +msgid "" +"Referents (direct and indirect) might have already been cleared; they are " +"not guaranteed to be in a consistent state." +msgstr "" +"Referenzierte Objekte (unmittelbar und mittelbar) können bereits geleert " +"worden sein. Dass sie in einem widerspruchsfreien Zustand sind, ist nicht " +"zugesichert." + +#: ../../c-api/typeobj.rst:1630 +msgid "" +"The :c:member:`~PyTypeObject.tp_clear` function can be called from any " +"thread." +msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_clear` darf aus jedem Thread " +"aufgerufen werden." + +#: ../../c-api/typeobj.rst:1635 +msgid "" +"An object is not guaranteed to be automatically cleared before its " +"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called." +msgstr "" +"Dass ein Objekt automatisch geleert wird, bevor sein Destruktor " +"(:c:member:`~PyTypeObject.tp_dealloc`) aufgerufen wird, ist nicht " +"zugesichert." + +#: ../../c-api/typeobj.rst:1638 +msgid "" +"This function differs from the destructor " +"(:c:member:`~PyTypeObject.tp_dealloc`) in the following ways:" +msgstr "" +"Diese Funktion unterscheidet sich vom Destruktor " +"(:c:member:`~PyTypeObject.tp_dealloc`) in folgender Hinsicht:" + +#: ../../c-api/typeobj.rst:1641 +msgid "" +"The purpose of clearing an object is to remove references to other objects " +"that might participate in a reference cycle. The purpose of the destructor, " +"on the other hand, is a superset: it must release *all* resources it owns, " +"including references to objects that cannot participate in a reference cycle " +"(e.g., integers) as well as the object's own memory (by " +"calling :c:member:`~PyTypeObject.tp_free`)." +msgstr "" +"Der Zweck des Leerens eines Objekts ist es, Referenzen auf andere Objekte zu " +"entfernen, die an einem Referenzzyklus teilnehmen könnten. Der Zweck des " +"Destruktors ist dagegen umfassender: Er muss *alle* Ressourcen freigeben, " +"die ihm gehören, auch Referenzen auf Objekte, die an keinem Referenzzyklus " +"teilnehmen können (etwa ganze Zahlen), sowie den Speicher des Objekts selbst " +"(durch Aufruf von :c:member:`~PyTypeObject.tp_free`)." + +#: ../../c-api/typeobj.rst:1647 +msgid "" +"When :c:member:`!tp_clear` is called, other objects might still hold " +"references to the object being cleared. Because of this, :c:member:`!" +"tp_clear` must not deallocate the object's own memory " +"(:c:member:`~PyTypeObject.tp_free`). The destructor, on the other hand, is " +"only called when no (strong) references exist, and as such, must safely " +"destroy the object itself by deallocating it." +msgstr "" +"Wenn :c:member:`!tp_clear` aufgerufen wird, halten andere Objekte " +"möglicherweise noch Referenzen auf das zu leerende Objekt. Deshalb " +"darf :c:member:`!tp_clear` den Speicher des Objekts selbst nicht freigeben " +"(:c:member:`~PyTypeObject.tp_free`). Der Destruktor wird dagegen erst " +"aufgerufen, wenn keine (starken) Referenzen mehr bestehen, und muss das " +"Objekt deshalb gefahrlos zerstören, indem er es freigibt." + +#: ../../c-api/typeobj.rst:1653 +msgid "" +":c:member:`!tp_clear` might never be automatically called. An object's " +"destructor, on the other hand, will be automatically called some time after " +"the object becomes unreachable (i.e., either there are no references to the " +"object or the object is a member of a :term:`cyclic isolate`)." +msgstr "" +":c:member:`!tp_clear` wird möglicherweise nie automatisch aufgerufen. Der " +"Destruktor eines Objekts wird dagegen einige Zeit, nachdem das Objekt " +"unerreichbar geworden ist, automatisch aufgerufen (also wenn entweder keine " +"Referenzen mehr auf das Objekt bestehen oder das Objekt Teil " +"eines :term:`zyklischen Isolats ` ist)." + +#: ../../c-api/typeobj.rst:1658 +msgid "" +"No guarantees are made about when, if, or how often Python automatically " +"clears an object, except:" +msgstr "" +"Darüber, wann, ob und wie oft Python ein Objekt automatisch leert, werden " +"keine Zusagen gemacht, außer:" + +#: ../../c-api/typeobj.rst:1661 +msgid "" +"Python will not automatically clear an object if it is reachable, i.e., " +"there is a reference to it and it is not a member of a :term:`cyclic " +"isolate`." +msgstr "" +"Python leert ein Objekt nicht automatisch, wenn es erreichbar ist, also wenn " +"eine Referenz darauf besteht und es nicht Teil eines :term:`zyklischen " +"Isolats ` ist." + +#: ../../c-api/typeobj.rst:1664 +msgid "" +"Python will not automatically clear an object if it has not been " +"automatically finalized (see :c:member:`~PyTypeObject.tp_finalize`). (If " +"the finalizer resurrected the object, the object may or may not be " +"automatically finalized again before it is cleared.)" +msgstr "" +"Python leert ein Objekt nicht automatisch, wenn es nicht automatisch " +"finalisiert wurde (siehe :c:member:`~PyTypeObject.tp_finalize`). (Hat der " +"Finalisierer das Objekt wieder auferstehen lassen, kann es sein, dass das " +"Objekt vor dem Leeren noch einmal automatisch finalisiert wird oder auch " +"nicht.)" + +#: ../../c-api/typeobj.rst:1668 +msgid "" +"If an object is a member of a :term:`cyclic isolate`, Python will not " +"automatically clear it if any member of the cyclic isolate has not yet been " +"automatically finalized (:c:member:`~PyTypeObject.tp_finalize`)." +msgstr "" +"Ist ein Objekt Teil eines :term:`zyklischen Isolats `, leert " +"Python es nicht automatisch, solange noch ein Mitglied des Isolats nicht " +"automatisch finalisiert wurde (:c:member:`~PyTypeObject.tp_finalize`)." + +#: ../../c-api/typeobj.rst:1671 +msgid "" +"Python will not destroy an object until after any automatic calls to " +"its :c:member:`!tp_clear` function have returned. This ensures that the act " +"of breaking a reference cycle does not invalidate the ``self`` pointer " +"while :c:member:`!tp_clear` is still executing." +msgstr "" +"Python zerstört ein Objekt erst, nachdem alle automatischen Aufrufe seiner " +"Funktion :c:member:`!tp_clear` zurückgekehrt sind. Damit ist sichergestellt, " +"dass das Aufbrechen eines Referenzzyklus den Zeiger ``self`` nicht ungültig " +"macht, während :c:member:`!tp_clear` noch läuft." + +#: ../../c-api/typeobj.rst:1675 +msgid "" +"Python will not automatically call :c:member:`!tp_clear` multiple times " +"concurrently." +msgstr "" +"Python ruft :c:member:`!tp_clear` nicht automatisch mehrfach gleichzeitig " +"auf." + +#: ../../c-api/typeobj.rst:1678 +msgid "" +"CPython currently only automatically clears objects as needed to break " +"reference cycles in a :term:`cyclic isolate`, but future versions might " +"clear objects regularly before their destruction." +msgstr "" +"CPython leert derzeit nur die Objekte automatisch, die nötig sind, um " +"Referenzzyklen in einem :term:`zyklischen Isolat ` " +"aufzubrechen. Künftige Versionen könnten Objekte aber regelmäßig vor ihrer " +"Zerstörung leeren." + +#: ../../c-api/typeobj.rst:1682 +msgid "" +"Taken together, all :c:member:`~PyTypeObject.tp_clear` functions in the " +"system must combine to break all reference cycles. This is subtle, and if " +"in any doubt supply a :c:member:`~PyTypeObject.tp_clear` function. For " +"example, the tuple type does not implement " +"a :c:member:`~PyTypeObject.tp_clear` function, because it's possible to " +"prove that no reference cycle can be composed entirely of tuples. Therefore " +"the :c:member:`~PyTypeObject.tp_clear` functions of other types are " +"responsible for breaking any cycle containing a tuple. This isn't " +"immediately obvious, and there's rarely a good reason to avoid " +"implementing :c:member:`~PyTypeObject.tp_clear`." +msgstr "" +"Zusammengenommen müssen alle Funktionen :c:member:`~PyTypeObject.tp_clear` " +"im System gemeinsam alle Referenzzyklen aufbrechen. Das ist feinsinnig, und " +"im Zweifel stellst du besser eine " +"Funktion :c:member:`~PyTypeObject.tp_clear` bereit. Der Typ tuple zum " +"Beispiel setzt keine Funktion :c:member:`~PyTypeObject.tp_clear` um, weil " +"sich beweisen lässt, dass kein Referenzzyklus ausschließlich aus Tupeln " +"bestehen kann. Deshalb sind die " +"Funktionen :c:member:`~PyTypeObject.tp_clear` anderer Typen dafür zuständig, " +"jeden Zyklus aufzubrechen, der ein Tupel enthält. Das ist nicht sofort " +"offensichtlich, und es gibt selten einen guten " +"Grund, :c:member:`~PyTypeObject.tp_clear` nicht umzusetzen." + +#: ../../c-api/typeobj.rst:1693 +msgid "" +"Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the " +"instance's references to those of its members that may be Python objects, " +"and set its pointers to those members to ``NULL``, as in the following " +"example::" +msgstr "" +"Umsetzungen von :c:member:`~PyTypeObject.tp_clear` sollten die Referenzen " +"der Instanz auf diejenigen ihrer Member fallen lassen, die Python-Objekte " +"sein können, und ihre Zeiger auf diese Member auf ``NULL`` setzen, wie im " +"folgenden Beispiel::" + +#: ../../c-api/typeobj.rst:1697 +msgid "" +"static int\n" +"local_clear(PyObject *op)\n" +"{\n" +" localobject *self = (localobject *) op;\n" +" Py_CLEAR(self->key);\n" +" Py_CLEAR(self->args);\n" +" Py_CLEAR(self->kw);\n" +" Py_CLEAR(self->dict);\n" +" return 0;\n" +"}" +msgstr "" +"static int\n" +"local_clear(PyObject *op)\n" +"{\n" +" localobject *self = (localobject *) op;\n" +" Py_CLEAR(self->key);\n" +" Py_CLEAR(self->args);\n" +" Py_CLEAR(self->kw);\n" +" Py_CLEAR(self->dict);\n" +" return 0;\n" +"}" + +#: ../../c-api/typeobj.rst:1708 +msgid "" +"The :c:func:`Py_CLEAR` macro should be used, because clearing references is " +"delicate: the reference to the contained object must not be released " +"(via :c:func:`Py_DECREF`) until after the pointer to the contained object is " +"set to ``NULL``. This is because releasing the reference may cause the " +"contained object to become trash, triggering a chain of reclamation activity " +"that may include invoking arbitrary Python code (due to finalizers, or " +"weakref callbacks, associated with the contained object). If it's possible " +"for such code to reference *self* again, it's important that the pointer to " +"the contained object be ``NULL`` at that time, so that *self* knows the " +"contained object can no longer be used. The :c:func:`Py_CLEAR` macro " +"performs the operations in a safe order." +msgstr "" +"Das Makro :c:func:`Py_CLEAR` sollte verwendet werden, weil das Leeren von " +"Referenzen heikel ist: Die Referenz auf das enthaltene Objekt darf erst dann " +"freigegeben werden (über :c:func:`Py_DECREF`), nachdem der Zeiger auf das " +"enthaltene Objekt auf ``NULL`` gesetzt wurde. Denn das Freigeben der " +"Referenz kann dazu führen, dass das enthaltene Objekt zu Müll wird, was eine " +"Kette von Aufräumvorgängen anstößt, die auch das Ausführen beliebigen Python-" +"Codes umfassen kann (durch Finalisierer oder Weakref-Callbacks des " +"enthaltenen Objekts). Kann solcher Code *self* erneut referenzieren, ist es " +"wichtig, dass der Zeiger auf das enthaltene Objekt zu diesem Zeitpunkt " +"``NULL`` ist, damit *self* weiß, dass das enthaltene Objekt nicht mehr " +"verwendet werden kann. Das Makro :c:func:`Py_CLEAR` führt die Schritte in " +"einer sicheren Reihenfolge aus." + +#: ../../c-api/typeobj.rst:1720 +msgid "" +"If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in " +"the :c:member:`~PyTypeObject.tp_flags` field, the clear function must " +"call :c:func:`PyObject_ClearManagedDict` like this::" +msgstr "" +"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` im " +"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, muss die clear-" +"Funktion :c:func:`PyObject_ClearManagedDict` so aufrufen::" + +#: ../../c-api/typeobj.rst:1724 +msgid "PyObject_ClearManagedDict((PyObject*)self);" +msgstr "PyObject_ClearManagedDict((PyObject*)self);" + +#: ../../c-api/typeobj.rst:1726 +msgid "" +"More information about Python's garbage collection scheme can be found in " +"section :ref:`supporting-cycle-detection`." +msgstr "" +"Mehr Informationen zum Verfahren der Speicherbereinigung in Python stehen im " +"Abschnitt :ref:`supporting-cycle-detection`." + +#: ../../c-api/typeobj.rst:1733 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_traverse` and " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag " +"bit, :c:member:`~PyTypeObject.tp_traverse`, " +"and :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type " +"if they are all zero in the subtype." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_traverse` und dem Flag-" +"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` vererbt: Das Flag-" +"Bit, :c:member:`~PyTypeObject.tp_traverse` " +"und :c:member:`~PyTypeObject.tp_clear` werden alle vom Basistyp geerbt, wenn " +"sie im Untertyp alle null sind." + +#: ../../c-api/typeobj.rst:1747 +msgid "" +"An optional pointer to the rich comparison function, whose signature is::" +msgstr "" +"Ein wahlfreier Zeiger auf die Funktion für den erweiterten Vergleich, deren " +"Signatur lautet::" + +#: ../../c-api/typeobj.rst:1749 +msgid "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" +msgstr "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" + +#: ../../c-api/typeobj.rst:1751 +msgid "" +"The first parameter is guaranteed to be an instance of the type that is " +"defined by :c:type:`PyTypeObject`." +msgstr "" +"Der erste Parameter ist garantiert eine Instanz des Typs, der " +"durch :c:type:`PyTypeObject` festgelegt ist." + +#: ../../c-api/typeobj.rst:1754 +msgid "" +"The function should return the result of the comparison (usually ``Py_True`` " +"or ``Py_False``). If the comparison is undefined, it must return " +"``Py_NotImplemented``, if another error occurred it must return ``NULL`` and " +"set an exception condition." +msgstr "" +"Die Funktion sollte das Ergebnis des Vergleichs zurückgeben (üblicherweise " +"``Py_True`` oder ``Py_False``). Ist der Vergleich undefiniert, muss sie " +"``Py_NotImplemented`` zurückgeben. Trat ein anderer Fehler auf, muss sie " +"``NULL`` zurückgeben und einen Ausnahmezustand setzen." + +#: ../../c-api/typeobj.rst:1759 +msgid "" +"The following constants are defined to be used as the third argument " +"for :c:member:`~PyTypeObject.tp_richcompare` and " +"for :c:func:`PyObject_RichCompare`:" +msgstr "" +"Die folgenden Konstanten sind festgelegt, um als drittes Argument " +"für :c:member:`~PyTypeObject.tp_richcompare` und " +"für :c:func:`PyObject_RichCompare` verwendet zu werden:" + +#: ../../c-api/typeobj.rst:1765 +msgid "Constant" +msgstr "Konstante" + +#: ../../c-api/typeobj.rst:1765 +msgid "Comparison" +msgstr "Vergleich" + +#: ../../c-api/typeobj.rst:1767 +msgid "``<``" +msgstr "``<``" + +#: ../../c-api/typeobj.rst:1769 +msgid "``<=``" +msgstr "``<=``" + +#: ../../c-api/typeobj.rst:1771 +msgid "``==``" +msgstr "``==``" + +#: ../../c-api/typeobj.rst:1773 +msgid "``!=``" +msgstr "``!=``" + +#: ../../c-api/typeobj.rst:1775 +msgid "``>``" +msgstr "``>``" + +#: ../../c-api/typeobj.rst:1777 +msgid "``>=``" +msgstr "``>=``" + +#: ../../c-api/typeobj.rst:1780 +msgid "" +"The following macro is defined to ease writing rich comparison functions:" +msgstr "" +"Das folgende Makro ist festgelegt, um das Schreiben von Funktionen für den " +"erweiterten Vergleich zu erleichtern:" + +#: ../../c-api/typeobj.rst:1784 +msgid "" +"Return ``Py_True`` or ``Py_False`` from the function, depending on the " +"result of a comparison. VAL_A and VAL_B must be orderable by C comparison " +"operators (for example, they may be C ints or floats). The third argument " +"specifies the requested operation, as for :c:func:`PyObject_RichCompare`." +msgstr "" +"Gibt je nach Ergebnis eines Vergleichs ``Py_True`` oder ``Py_False`` aus der " +"Funktion zurück. VAL_A und VAL_B müssen sich über die C-Vergleichsoperatoren " +"ordnen lassen (sie dürfen zum Beispiel C-ints oder -floats sein). Das dritte " +"Argument gibt den gewünschten Vorgang an, wie " +"bei :c:func:`PyObject_RichCompare`." + +#: ../../c-api/typeobj.rst:1790 +msgid "The returned value is a new :term:`strong reference`." +msgstr "" +"Der zurückgegebene Wert ist eine neue :term:`starke Referenz `." + +#: ../../c-api/typeobj.rst:1792 +msgid "On error, sets an exception and returns ``NULL`` from the function." +msgstr "" +"Im Fehlerfall setzt es eine Ausnahme und gibt ``NULL`` aus der Funktion " +"zurück." + +#: ../../c-api/typeobj.rst:1800 +msgid "" +"This field is inherited by subtypes together " +"with :c:member:`~PyTypeObject.tp_hash`: a subtype " +"inherits :c:member:`~PyTypeObject.tp_richcompare` " +"and :c:member:`~PyTypeObject.tp_hash` when the " +"subtype's :c:member:`~PyTypeObject.tp_richcompare` " +"and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." +msgstr "" +"Dieses Feld wird von Untertypen gemeinsam " +"mit :c:member:`~PyTypeObject.tp_hash` vererbt: Ein Untertyp " +"erbt :c:member:`~PyTypeObject.tp_richcompare` " +"und :c:member:`~PyTypeObject.tp_hash`, " +"wenn :c:member:`~PyTypeObject.tp_richcompare` " +"und :c:member:`~PyTypeObject.tp_hash` des Untertyps beide ``NULL`` sind." + +#: ../../c-api/typeobj.rst:1807 +msgid "" +":c:data:`PyBaseObject_Type` provides " +"a :c:member:`~PyTypeObject.tp_richcompare` implementation, which may be " +"inherited. However, if only :c:member:`~PyTypeObject.tp_hash` is defined, " +"not even the inherited function is used and instances of the type will not " +"be able to participate in any comparisons." +msgstr "" +":c:data:`PyBaseObject_Type` stellt eine Umsetzung " +"von :c:member:`~PyTypeObject.tp_richcompare` bereit, die geerbt werden kann. " +"Ist allerdings nur :c:member:`~PyTypeObject.tp_hash` festgelegt, wird nicht " +"einmal die geerbte Funktion verwendet, und Instanzen des Typs können an " +"keinerlei Vergleichen teilnehmen." + +#: ../../c-api/typeobj.rst:1816 +msgid "" +"While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` " +"should be used instead, if at all possible." +msgstr "" +"Dieses Feld wird zwar weiterhin unterstützt, aber nach Möglichkeit sollte " +"stattdessen :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` verwendet werden." + +#: ../../c-api/typeobj.rst:1819 +msgid "" +"If the instances of this type are weakly referenceable, this field is " +"greater than zero and contains the offset in the instance structure of the " +"weak reference list head (ignoring the GC header, if present); this offset " +"is used by :c:func:`PyObject_ClearWeakRefs` and the ``PyWeakref_*`` " +"functions. The instance structure needs to include a field of " +"type :c:expr:`PyObject*` which is initialized to ``NULL``." +msgstr "" +"Sind die Instanzen dieses Typs schwach referenzierbar, ist dieses Feld " +"größer als null und enthält den Versatz des Kopfes der Liste schwacher " +"Referenzen in der Instanzstruktur (ohne den GC-Kopf, falls vorhanden). " +"Dieser Versatz wird von :c:func:`PyObject_ClearWeakRefs` und den " +"``PyWeakref_*``-Funktionen verwendet. Die Instanzstruktur muss ein Feld vom " +"Typ :c:expr:`PyObject*` enthalten, das auf ``NULL`` initialisiert wird." + +#: ../../c-api/typeobj.rst:1826 +msgid "" +"Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that " +"is the list head for weak references to the type object itself." +msgstr "" +"Verwechsle dieses Feld nicht mit :c:member:`~PyTypeObject.tp_weaklist`. Das " +"ist der Listenkopf für schwache Referenzen auf das Typobjekt selbst." + +#: ../../c-api/typeobj.rst:1829 +msgid "" +"It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit " +"and :c:member:`~PyTypeObject.tp_weaklistoffset`." +msgstr "" +"Es ist ein Fehler, sowohl das Bit :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` als " +"auch :c:member:`~PyTypeObject.tp_weaklistoffset` zu setzen." + +#: ../../c-api/typeobj.rst:1834 +msgid "" +"This field is inherited by subtypes, but see the rules listed below. A " +"subtype may override this offset; this means that the subtype uses a " +"different weak reference list head than the base type. Since the list head " +"is always found via :c:member:`~PyTypeObject.tp_weaklistoffset`, this should " +"not be a problem." +msgstr "" +"Dieses Feld wird an Untertypen vererbt, siehe aber die unten aufgeführten " +"Regeln. Ein Untertyp darf diesen Versatz übergehen. Das bedeutet, dass der " +"Untertyp einen anderen Kopf der Liste schwacher Referenzen verwendet als der " +"Basistyp. Da der Listenkopf immer " +"über :c:member:`~PyTypeObject.tp_weaklistoffset` gefunden wird, sollte das " +"kein Problem sein." + +#: ../../c-api/typeobj.rst:1841 +msgid "" +"If the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit is set in " +"the :c:member:`~PyTypeObject.tp_flags` field, " +"then :c:member:`~PyTypeObject.tp_weaklistoffset` will be set to a negative " +"value, to indicate that it is unsafe to use this field." +msgstr "" +"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` im " +"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, " +"wird :c:member:`~PyTypeObject.tp_weaklistoffset` auf einen negativen Wert " +"gesetzt, um anzuzeigen, dass es nicht gefahrlos verwendet werden kann." + +#: ../../c-api/typeobj.rst:1851 +msgid "" +"An optional pointer to a function that returns an :term:`iterator` for the " +"object. Its presence normally signals that the instances of this type " +"are :term:`iterable` (although sequences may be iterable without this " +"function)." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die einen :term:`Iterator " +"` für das Objekt zurückgibt. Sein Vorhandensein zeigt " +"normalerweise an, dass die Instanzen dieses Typs :term:`iterierbar " +"` sind (Sequenzen können allerdings auch ohne diese Funktion " +"iterierbar sein)." + +#: ../../c-api/typeobj.rst:1855 +msgid "This function has the same signature as :c:func:`PyObject_GetIter`::" +msgstr "Diese Funktion hat dieselbe Signatur wie :c:func:`PyObject_GetIter`::" + +#: ../../c-api/typeobj.rst:1857 +msgid "PyObject *tp_iter(PyObject *self);" +msgstr "PyObject *tp_iter(PyObject *self);" + +#: ../../c-api/typeobj.rst:1868 +msgid "" +"An optional pointer to a function that returns the next item in " +"an :term:`iterator`. The signature is::" +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die das nächste Element " +"eines :term:`Iterators ` zurückgibt. Die Signatur lautet::" + +#: ../../c-api/typeobj.rst:1871 +msgid "PyObject *tp_iternext(PyObject *self);" +msgstr "PyObject *tp_iternext(PyObject *self);" + +#: ../../c-api/typeobj.rst:1873 +msgid "" +"When the iterator is :term:`exhausted`, the ``tp_iternext`` function must " +"return ``NULL``; a :exc:`StopIteration` exception may or may not be set. " +"When another error occurs, it must return ``NULL`` too. The presence of " +"``tp_iternext`` signals that the instances of this type are iterators." +msgstr "" +"Ist der Iterator :term:`erschöpft `, muss die Funktion " +"``tp_iternext`` ``NULL`` zurückgeben. Eine :exc:`StopIteration`-Ausnahme " +"kann gesetzt sein oder auch nicht. Tritt ein anderer Fehler auf, muss sie " +"ebenfalls ``NULL`` zurückgeben. Das Vorhandensein von ``tp_iternext`` zeigt " +"an, dass die Instanzen dieses Typs Iteratoren sind." + +#: ../../c-api/typeobj.rst:1879 +msgid "" +"Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` " +"function, and that function should return the iterator instance itself (not " +"a new iterator instance)." +msgstr "" +"Iteratortypen sollten außerdem die " +"Funktion :c:member:`~PyTypeObject.tp_iter` festlegen, und diese Funktion " +"sollte die Iterator-Instanz selbst zurückgeben (keine neue Iterator-Instanz)." + +#: ../../c-api/typeobj.rst:1883 +msgid "This function has the same signature as :c:func:`PyIter_Next`." +msgstr "Diese Funktion hat dieselbe Signatur wie :c:func:`PyIter_Next`." + +#: ../../c-api/typeobj.rst:1894 +msgid "" +"An optional pointer to a static ``NULL``-terminated array " +"of :c:type:`PyMethodDef` structures, declaring regular methods of this type." +msgstr "" +"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " +"von :c:type:`PyMethodDef`-Strukturen, die die gewöhnlichen Methoden dieses " +"Typs deklarieren." + +#: ../../c-api/typeobj.rst:1897 +msgid "" +"For each entry in the array, an entry is added to the type's dictionary " +"(see :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor." +msgstr "" +"Für jeden Eintrag im Array wird dem Dictionary des Typs " +"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem " +"Methodendeskriptor hinzugefügt." + +#: ../../c-api/typeobj.rst:1902 +msgid "" +"This field is not inherited by subtypes (methods are inherited through a " +"different mechanism)." +msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (Methoden werden über einen " +"anderen Mechanismus vererbt)." + +#: ../../c-api/typeobj.rst:1910 +msgid "" +"An optional pointer to a static ``NULL``-terminated array " +"of :c:type:`PyMemberDef` structures, declaring regular data members (fields " +"or slots) of instances of this type." +msgstr "" +"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " +"von :c:type:`PyMemberDef`-Strukturen, die die gewöhnlichen Datenmember " +"(Felder oder Slots) von Instanzen dieses Typs deklarieren." + +#: ../../c-api/typeobj.rst:1914 +msgid "" +"For each entry in the array, an entry is added to the type's dictionary " +"(see :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor." +msgstr "" +"Für jeden Eintrag im Array wird dem Dictionary des Typs " +"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem Member-" +"Deskriptor hinzugefügt." + +#: ../../c-api/typeobj.rst:1919 +msgid "" +"This field is not inherited by subtypes (members are inherited through a " +"different mechanism)." +msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (Member werden über einen " +"anderen Mechanismus vererbt)." + +#: ../../c-api/typeobj.rst:1927 +msgid "" +"An optional pointer to a static ``NULL``-terminated array " +"of :c:type:`PyGetSetDef` structures, declaring computed attributes of " +"instances of this type." +msgstr "" +"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " +"von :c:type:`PyGetSetDef`-Strukturen, die berechnete Attribute von Instanzen " +"dieses Typs deklarieren." + +#: ../../c-api/typeobj.rst:1930 +msgid "" +"For each entry in the array, an entry is added to the type's dictionary " +"(see :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor." +msgstr "" +"Für jeden Eintrag im Array wird dem Dictionary des Typs " +"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem getset-" +"Deskriptor hinzugefügt." + +#: ../../c-api/typeobj.rst:1935 +msgid "" +"This field is not inherited by subtypes (computed attributes are inherited " +"through a different mechanism)." +msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (berechnete Attribute werden " +"über einen anderen Mechanismus vererbt)." + +#: ../../c-api/typeobj.rst:1941 +msgid "" +"An optional pointer to a base type from which type properties are " +"inherited. At this level, only single inheritance is supported; multiple " +"inheritance require dynamically creating a type object by calling the " +"metatype." +msgstr "" +"Ein wahlfreier Zeiger auf einen Basistyp, von dem Typeigenschaften geerbt " +"werden. Auf dieser Ebene wird nur Einfachvererbung unterstützt; " +"Mehrfachvererbung erfordert, ein Typobjekt dynamisch durch Aufruf des " +"Metatyps zu erzeugen." + +#: ../../c-api/typeobj.rst:1945 +msgid "For the corresponding slot ID, see :c:macro:`Py_tp_base`." +msgstr "Die zugehörige Slot-ID steht unter :c:macro:`Py_tp_base`." + +#: ../../c-api/typeobj.rst:1951 +msgid "" +"Slot initialization is subject to the rules of initializing globals. C99 " +"requires the initializers to be \"address constants\". Function designators " +"like :c:func:`PyType_GenericNew`, with implicit conversion to a pointer, are " +"valid C99 address constants." +msgstr "" +"Für das Initialisieren von Slots gelten die Regeln zum Initialisieren von " +"Globalen. C99 verlangt, dass die Initialisierer „Adresskonstanten“ sind. " +"Funktionsbezeichner wie :c:func:`PyType_GenericNew` sind mit ihrer " +"stillschweigenden Umwandlung in einen Zeiger gültige C99-Adresskonstanten." + +#: ../../c-api/typeobj.rst:1956 +msgid "" +"However, the unary '&' operator applied to a non-static variable " +"like :c:data:`PyBaseObject_Type` is not required to produce an address " +"constant. Compilers may support this (gcc does), MSVC does not. Both " +"compilers are strictly standard conforming in this particular behavior." +msgstr "" +"Der unäre Operator „&“, angewendet auf eine nicht statische Variable " +"wie :c:data:`PyBaseObject_Type`, muss dagegen keine Adresskonstante ergeben. " +"Compiler dürfen das unterstützen (gcc tut es), MSVC tut es nicht. Beide " +"Compiler halten sich in diesem Punkt streng an den Standard." + +#: ../../c-api/typeobj.rst:1962 +msgid "" +"Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the " +"extension module's init function." +msgstr "" +"Folglich sollte :c:member:`~PyTypeObject.tp_base` in der init-Funktion des " +"Erweiterungsmoduls gesetzt werden." + +#: ../../c-api/typeobj.rst:1967 +msgid "This field is not inherited by subtypes (obviously)." +msgstr "Dieses Feld wird (selbstverständlich) nicht an Untertypen vererbt." + +#: ../../c-api/typeobj.rst:1971 +msgid "" +"This field defaults to ``&PyBaseObject_Type`` (which to Python programmers " +"is known as the type :class:`object`)." +msgstr "" +"Dieses Feld ist auf ``&PyBaseObject_Type`` voreingestellt (was Python-" +"Programmierer als den Typ :class:`object` kennen)." + +#: ../../c-api/typeobj.rst:1977 +msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`." +msgstr "Das Dictionary des Typs wird hier von :c:func:`PyType_Ready` abgelegt." + +#: ../../c-api/typeobj.rst:1979 +msgid "" +"This field should normally be initialized to ``NULL`` before PyType_Ready is " +"called; it may also be initialized to a dictionary containing initial " +"attributes for the type. Once :c:func:`PyType_Ready` has initialized the " +"type, extra attributes for the type may be added to this dictionary only if " +"they don't correspond to overloaded operations " +"(like :meth:`~object.__add__`). Once initialization for the type has " +"finished, this field should be treated as read-only." +msgstr "" +"Dieses Feld sollte normalerweise auf ``NULL`` initialisiert werden, bevor " +"PyType_Ready aufgerufen wird. Es darf auch mit einem Dictionary mit " +"Anfangsattributen für den Typ initialisiert werden. " +"Sobald :c:func:`PyType_Ready` den Typ initialisiert hat, dürfen diesem " +"Dictionary nur dann weitere Attribute für den Typ hinzugefügt werden, wenn " +"sie nicht zu überladenen Operationen gehören (wie :meth:`~object.__add__`). " +"Ist die Initialisierung des Typs abgeschlossen, sollte dieses Feld als nur " +"lesbar behandelt werden." + +#: ../../c-api/typeobj.rst:1987 +msgid "" +"Some types may not store their dictionary in this slot. " +"Use :c:func:`PyType_GetDict` to retrieve the dictionary for an arbitrary " +"type." +msgstr "" +"Manche Typen legen ihr Dictionary nicht in diesem Slot ab. " +"Verwende :c:func:`PyType_GetDict`, um das Dictionary eines beliebigen Typs " +"zu holen." + +#: ../../c-api/typeobj.rst:1993 +msgid "" +"Internals detail: For static builtin types, this is always ``NULL``. " +"Instead, the dict for such types is stored on ``PyInterpreterState``. " +"Use :c:func:`PyType_GetDict` to get the dict for an arbitrary type." +msgstr "" +"Zu den Interna: Bei statischen integrierten Typen ist das immer ``NULL``. " +"Das Dictionary solcher Typen liegt stattdessen am ``PyInterpreterState``. " +"Verwende :c:func:`PyType_GetDict`, um das Dictionary eines beliebigen Typs " +"zu bekommen." + +#: ../../c-api/typeobj.rst:1999 +msgid "" +"This field is not inherited by subtypes (though the attributes defined in " +"here are inherited through a different mechanism)." +msgstr "" +"Dieses Feld wird nicht an Untertypen vererbt (die hier festgelegten " +"Attribute werden allerdings über einen anderen Mechanismus vererbt)." + +#: ../../c-api/typeobj.rst:2004 +msgid "" +"If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new " +"dictionary to it." +msgstr "" +"Ist dieses Feld ``NULL``, weist :c:func:`PyType_Ready` ihm ein neues " +"Dictionary zu." + +#: ../../c-api/typeobj.rst:2009 +msgid "" +"It is not safe to use :c:func:`PyDict_SetItem` on or otherwise " +"modify :c:member:`~PyTypeObject.tp_dict` with the dictionary C-API." +msgstr "" +"Es ist nicht gefahrlos möglich, :c:func:`PyDict_SetItem` " +"auf :c:member:`~PyTypeObject.tp_dict` anzuwenden oder es anderweitig über " +"die Dictionary-C-API zu ändern." + +#: ../../c-api/typeobj.rst:2017 +msgid "An optional pointer to a \"descriptor get\" function." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zum Lesen eines Deskriptors " +"(„descriptor get“)." + +#: ../../c-api/typeobj.rst:2019 ../../c-api/typeobj.rst:2037 +#: ../../c-api/typeobj.rst:2103 ../../c-api/typeobj.rst:2135 +#: ../../c-api/typeobj.rst:2160 +msgid "The function signature is::" +msgstr "Die Signatur der Funktion lautet::" + +#: ../../c-api/typeobj.rst:2021 +msgid "PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" +msgstr "" +"PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" + +#: ../../c-api/typeobj.rst:2034 +msgid "" +"An optional pointer to a function for setting and deleting a descriptor's " +"value." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zum Setzen und Löschen des Werts " +"eines Deskriptors." + +#: ../../c-api/typeobj.rst:2039 +msgid "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" +msgstr "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" + +#: ../../c-api/typeobj.rst:2041 +msgid "The *value* argument is set to ``NULL`` to delete the value." +msgstr "" +"Das Argument *value* wird auf ``NULL`` gesetzt, um den Wert zu löschen." + +#: ../../c-api/typeobj.rst:2052 +msgid "" +"While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_DICT` " +"should be used instead, if at all possible." +msgstr "" +"Dieses Feld wird zwar weiterhin unterstützt, aber nach Möglichkeit sollte " +"stattdessen :c:macro:`Py_TPFLAGS_MANAGED_DICT` verwendet werden." + +#: ../../c-api/typeobj.rst:2055 +msgid "" +"If the instances of this type have a dictionary containing instance " +"variables, this field is non-zero and contains the offset in the instances " +"of the type of the instance variable dictionary; this offset is used " +"by :c:func:`PyObject_GenericGetAttr`." +msgstr "" +"Haben die Instanzen dieses Typs ein Dictionary mit Instanzvariablen, ist " +"dieses Feld ungleich null und enthält den Versatz des Dictionarys der " +"Instanzvariablen in den Instanzen des Typs. Dieser Versatz wird " +"von :c:func:`PyObject_GenericGetAttr` verwendet." + +#: ../../c-api/typeobj.rst:2060 +msgid "" +"Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is " +"the dictionary for attributes of the type object itself." +msgstr "" +"Verwechsle dieses Feld nicht mit :c:member:`~PyTypeObject.tp_dict`. Das ist " +"das Dictionary für die Attribute des Typobjekts selbst." + +#: ../../c-api/typeobj.rst:2063 +msgid "" +"The value specifies the offset of the dictionary from the start of the " +"instance structure." +msgstr "" +"Der Wert gibt den Versatz des Dictionarys vom Anfang der Instanzstruktur an." + +#: ../../c-api/typeobj.rst:2065 +msgid "" +"The :c:member:`~PyTypeObject.tp_dictoffset` should be regarded as write-" +"only. To get the pointer to the dictionary " +"call :c:func:`PyObject_GenericGetDict`. " +"Calling :c:func:`PyObject_GenericGetDict` may need to allocate memory for " +"the dictionary, so it is may be more efficient to " +"call :c:func:`PyObject_GetAttr` when accessing an attribute on the object." +msgstr "" +":c:member:`~PyTypeObject.tp_dictoffset` sollte als nur schreibbar betrachtet " +"werden. Um den Zeiger auf das Dictionary zu bekommen, " +"rufe :c:func:`PyObject_GenericGetDict` auf. Der Aufruf " +"von :c:func:`PyObject_GenericGetDict` muss möglicherweise Speicher für das " +"Dictionary anfordern, deshalb kann es wirksamer " +"sein, :c:func:`PyObject_GetAttr` aufzurufen, wenn du auf ein Attribut des " +"Objekts zugreifst." + +#: ../../c-api/typeobj.rst:2071 +msgid "" +"It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit " +"and :c:member:`~PyTypeObject.tp_dictoffset`." +msgstr "" +"Es ist ein Fehler, sowohl das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` als " +"auch :c:member:`~PyTypeObject.tp_dictoffset` zu setzen." + +#: ../../c-api/typeobj.rst:2076 +msgid "" +"This field is inherited by subtypes. A subtype should not override this " +"offset; doing so could be unsafe, if C code tries to access the dictionary " +"at the previous offset. To properly support inheritance, " +"use :c:macro:`Py_TPFLAGS_MANAGED_DICT`." +msgstr "" +"Dieses Feld wird an Untertypen vererbt. Ein Untertyp sollte diesen Versatz " +"nicht übergehen. Das könnte gefährlich sein, wenn C-Code versucht, auf das " +"Dictionary beim bisherigen Versatz zuzugreifen. Um Vererbung richtig zu " +"unterstützen, verwende :c:macro:`Py_TPFLAGS_MANAGED_DICT`." + +#: ../../c-api/typeobj.rst:2083 +msgid "" +"This slot has no default. For :ref:`static types `, if the " +"field is ``NULL`` then no :attr:`~object.__dict__` gets created for " +"instances." +msgstr "" +"Dieser Slot hat keine Vorgabe. Bei :ref:`statischen Typen ` " +"wird für Instanzen kein :attr:`~object.__dict__` angelegt, wenn das Feld " +"``NULL`` ist." + +#: ../../c-api/typeobj.rst:2086 +msgid "" +"If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in " +"the :c:member:`~PyTypeObject.tp_flags` field, " +"then :c:member:`~PyTypeObject.tp_dictoffset` will be set to ``-1``, to " +"indicate that it is unsafe to use this field." +msgstr "" +"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` im " +"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, " +"wird :c:member:`~PyTypeObject.tp_dictoffset` auf ``-1`` gesetzt, um " +"anzuzeigen, dass es nicht gefahrlos verwendet werden kann." + +#: ../../c-api/typeobj.rst:2096 +msgid "An optional pointer to an instance initialization function." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Initialisierung von Instanzen." + +#: ../../c-api/typeobj.rst:2098 +msgid "" +"This function corresponds to the :meth:`~object.__init__` method of " +"classes. Like :meth:`!__init__`, it is possible to create an instance " +"without calling :meth:`!__init__`, and it is possible to reinitialize an " +"instance by calling its :meth:`!__init__` method again." +msgstr "" +"Diese Funktion entspricht der Methode :meth:`~object.__init__` von Klassen. " +"Wie bei :meth:`!__init__` lässt sich eine Instanz erzeugen, ohne :meth:`!" +"__init__` aufzurufen, und eine Instanz lässt sich neu initialisieren, indem " +"ihre Methode :meth:`!__init__` erneut aufgerufen wird." + +#: ../../c-api/typeobj.rst:2105 +msgid "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" +msgstr "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" + +#: ../../c-api/typeobj.rst:2107 +msgid "" +"The self argument is the instance to be initialized; the *args* and *kwds* " +"arguments represent positional and keyword arguments of the call " +"to :meth:`~object.__init__`." +msgstr "" +"Das Argument self ist die zu initialisierende Instanz. Die Argumente *args* " +"und *kwds* stehen für die Positions- und Schlüsselwortargumente des Aufrufs " +"von :meth:`~object.__init__`." + +#: ../../c-api/typeobj.rst:2111 +msgid "" +"The :c:member:`~PyTypeObject.tp_init` function, if not ``NULL``, is called " +"when an instance is created normally by calling its type, after the " +"type's :c:member:`~PyTypeObject.tp_new` function has returned an instance of " +"the type. If the :c:member:`~PyTypeObject.tp_new` function returns an " +"instance of some other type that is not a subtype of the original type, " +"no :c:member:`~PyTypeObject.tp_init` function is called; " +"if :c:member:`~PyTypeObject.tp_new` returns an instance of a subtype of the " +"original type, the subtype's :c:member:`~PyTypeObject.tp_init` is called." +msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_init` wird, sofern sie nicht " +"``NULL`` ist, aufgerufen, wenn eine Instanz auf gewöhnlichem Weg durch " +"Aufruf ihres Typs erzeugt wird, nachdem die " +"Funktion :c:member:`~PyTypeObject.tp_new` des Typs eine Instanz des Typs " +"zurückgegeben hat. Gibt die Funktion :c:member:`~PyTypeObject.tp_new` eine " +"Instanz eines anderen Typs zurück, der kein Untertyp des ursprünglichen Typs " +"ist, wird keine Funktion :c:member:`~PyTypeObject.tp_init` aufgerufen. " +"Gibt :c:member:`~PyTypeObject.tp_new` eine Instanz eines Untertyps des " +"ursprünglichen Typs zurück, wird :c:member:`~PyTypeObject.tp_init` des " +"Untertyps aufgerufen." + +#: ../../c-api/typeobj.rst:2118 +msgid "Returns ``0`` on success, ``-1`` and sets an exception on error." +msgstr "" +"Gibt bei Erfolg ``0`` zurück, im Fehlerfall ``-1``, und setzt eine Ausnahme." + +#: ../../c-api/typeobj.rst:2126 +msgid "" +"For :ref:`static types ` this field does not have a default." +msgstr "" +"Bei :ref:`statischen Typen ` hat dieses Feld keine Vorgabe." + +#: ../../c-api/typeobj.rst:2133 +msgid "An optional pointer to an instance allocation function." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Speicheranforderung für " +"Instanzen." + +#: ../../c-api/typeobj.rst:2137 +msgid "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" +msgstr "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" + +#: ../../c-api/typeobj.rst:2141 +msgid "" +"Static subtypes inherit this slot, which will " +"be :c:func:`PyType_GenericAlloc` if inherited from :class:`object`." +msgstr "" +"Statische Untertypen erben diesen Slot. Er " +"ist :c:func:`PyType_GenericAlloc`, wenn er von :class:`object` geerbt wird." + +#: ../../c-api/typeobj.rst:2144 ../../c-api/typeobj.rst:2215 +msgid ":ref:`Heap subtypes ` do not inherit this slot." +msgstr ":ref:`Heap-Untertypen ` erben diesen Slot nicht." + +#: ../../c-api/typeobj.rst:2148 +msgid "" +"For heap subtypes, this field is always set to :c:func:`PyType_GenericAlloc`." +msgstr "" +"Bei Heap-Untertypen ist dieses Feld immer auf :c:func:`PyType_GenericAlloc` " +"gesetzt." + +#: ../../c-api/typeobj.rst:2151 ../../c-api/typeobj.rst:2223 +msgid "For static subtypes, this slot is inherited (see above)." +msgstr "Bei statischen Untertypen wird dieser Slot vererbt (siehe oben)." + +#: ../../c-api/typeobj.rst:2158 +msgid "An optional pointer to an instance creation function." +msgstr "Ein wahlfreier Zeiger auf eine Funktion zum Erzeugen von Instanzen." + +#: ../../c-api/typeobj.rst:2162 +msgid "" +"PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" +msgstr "" +"PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" + +#: ../../c-api/typeobj.rst:2164 +msgid "" +"The *subtype* argument is the type of the object being created; the *args* " +"and *kwds* arguments represent positional and keyword arguments of the call " +"to the type. Note that *subtype* doesn't have to equal the type " +"whose :c:member:`~PyTypeObject.tp_new` function is called; it may be a " +"subtype of that type (but not an unrelated type)." +msgstr "" +"Das Argument *subtype* ist der Typ des zu erzeugenden Objekts. Die Argumente " +"*args* und *kwds* stehen für die Positions- und Schlüsselwortargumente des " +"Aufrufs des Typs. Beachte, dass *subtype* nicht gleich dem Typ sein muss, " +"dessen Funktion :c:member:`~PyTypeObject.tp_new` aufgerufen wird. Es darf " +"ein Untertyp dieses Typs sein (aber kein unverwandter Typ)." + +#: ../../c-api/typeobj.rst:2170 +msgid "" +"The :c:member:`~PyTypeObject.tp_new` function should call ``subtype-" +">tp_alloc(subtype, nitems)`` to allocate space for the object, and then do " +"only as much further initialization as is absolutely necessary. " +"Initialization that can safely be ignored or repeated should be placed in " +"the :c:member:`~PyTypeObject.tp_init` handler. A good rule of thumb is that " +"for immutable types, all initialization should take place " +"in :c:member:`~PyTypeObject.tp_new`, while for mutable types, most " +"initialization should be deferred to :c:member:`~PyTypeObject.tp_init`." +msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_new` sollte ``subtype-" +">tp_alloc(subtype, nitems)`` aufrufen, um Platz für das Objekt anzufordern, " +"und danach nur so viel weitere Initialisierung vornehmen, wie unbedingt " +"nötig ist. Initialisierung, die sich gefahrlos überspringen oder wiederholen " +"lässt, gehört in den Handler :c:member:`~PyTypeObject.tp_init`. Als " +"Faustregel gilt: Bei unveränderlichen Typen sollte alle Initialisierung " +"in :c:member:`~PyTypeObject.tp_new` stattfinden, bei veränderlichen Typen " +"sollte das meiste auf :c:member:`~PyTypeObject.tp_init` verschoben werden." + +#: ../../c-api/typeobj.rst:2178 +msgid "" +"Set the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag to disallow " +"creating instances of the type in Python." +msgstr "" +"Setze das Flag :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION`, um das Erzeugen " +"von Instanzen des Typs in Python zu verbieten." + +#: ../../c-api/typeobj.rst:2183 +msgid "" +"This field is inherited by subtypes, except it is not inherited " +"by :ref:`static types ` " +"whose :c:member:`~PyTypeObject.tp_base` is ``NULL`` or " +"``&PyBaseObject_Type``." +msgstr "" +"Dieses Feld wird an Untertypen vererbt, außer an :ref:`statische Typen " +"`, deren :c:member:`~PyTypeObject.tp_base` ``NULL`` oder " +"``&PyBaseObject_Type`` ist." + +#: ../../c-api/typeobj.rst:2189 +msgid "" +"For :ref:`static types ` this field has no default. This means " +"if the slot is defined as ``NULL``, the type cannot be called to create new " +"instances; presumably there is some other way to create instances, like a " +"factory function." +msgstr "" +"Bei :ref:`statischen Typen ` hat dieses Feld keine Vorgabe. " +"Das bedeutet: Ist der Slot als ``NULL`` festgelegt, lässt sich der Typ nicht " +"aufrufen, um neue Instanzen zu erzeugen. Vermutlich gibt es dann einen " +"anderen Weg, Instanzen zu erzeugen, etwa eine Factory-Funktion." + +#: ../../c-api/typeobj.rst:2199 +msgid "" +"An optional pointer to an instance deallocation function. Its signature is::" +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Speicherfreigabe für Instanzen. " +"Ihre Signatur lautet::" + +#: ../../c-api/typeobj.rst:2201 +msgid "void tp_free(void *self);" +msgstr "void tp_free(void *self);" + +#: ../../c-api/typeobj.rst:2203 +msgid "" +"This function must free the memory allocated " +"by :c:member:`~PyTypeObject.tp_alloc`." +msgstr "" +"Diese Funktion muss den Speicher freigeben, " +"den :c:member:`~PyTypeObject.tp_alloc` angefordert hat." + +#: ../../c-api/typeobj.rst:2208 +msgid "" +"Static subtypes inherit this slot, which will be :c:func:`PyObject_Free` if " +"inherited from :class:`object`. Exception: If the type supports garbage " +"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set " +"in :c:member:`~PyTypeObject.tp_flags`) and it would " +"inherit :c:func:`PyObject_Free`, then this slot is not inherited but instead " +"defaults to :c:func:`PyObject_GC_Del`." +msgstr "" +"Statische Untertypen erben diesen Slot. Er ist :c:func:`PyObject_Free`, wenn " +"er von :class:`object` geerbt wird. Ausnahme: Unterstützt der Typ die " +"Speicherbereinigung (ist also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` " +"in :c:member:`~PyTypeObject.tp_flags` gesetzt) und würde " +"er :c:func:`PyObject_Free` erben, wird dieser Slot nicht vererbt, sondern " +"ist auf :c:func:`PyObject_GC_Del` voreingestellt." + +#: ../../c-api/typeobj.rst:2219 +msgid "" +"For :ref:`heap subtypes `, this slot defaults to a deallocator " +"suitable to match :c:func:`PyType_GenericAlloc` and the value of " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag." +msgstr "" +"Bei :ref:`Heap-Untertypen ` ist dieser Slot auf einen " +"Deallokator voreingestellt, der zu :c:func:`PyType_GenericAlloc` und zum " +"Wert des Flags :c:macro:`Py_TPFLAGS_HAVE_GC` passt." + +#: ../../c-api/typeobj.rst:2230 +msgid "An optional pointer to a function called by the garbage collector." +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion, die die Speicherbereinigung aufruft." + +#: ../../c-api/typeobj.rst:2232 +msgid "" +"The garbage collector needs to know whether a particular object is " +"collectible or not. Normally, it is sufficient to look at the object's " +"type's :c:member:`~PyTypeObject.tp_flags` field, and check " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit. But some types have a mixture " +"of statically and dynamically allocated instances, and the statically " +"allocated instances are not collectible. Such types should define this " +"function; it should return ``1`` for a collectible instance, and ``0`` for a " +"non-collectible instance. The signature is::" +msgstr "" +"Die Speicherbereinigung muss wissen, ob ein bestimmtes Objekt einsammelbar " +"ist oder nicht. Normalerweise genügt es, das " +"Feld :c:member:`~PyTypeObject.tp_flags` des Typs des Objekts anzusehen und " +"das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_GC` zu prüfen. Manche Typen haben " +"aber eine Mischung aus statisch und dynamisch angelegten Instanzen, und die " +"statisch angelegten Instanzen sind nicht einsammelbar. Solche Typen sollten " +"diese Funktion festlegen. Sie sollte ``1`` für eine einsammelbare und ``0`` " +"für eine nicht einsammelbare Instanz zurückgeben. Die Signatur lautet::" + +#: ../../c-api/typeobj.rst:2240 +msgid "int tp_is_gc(PyObject *self);" +msgstr "int tp_is_gc(PyObject *self);" + +#: ../../c-api/typeobj.rst:2242 +msgid "" +"(The only example of this are types themselves. The " +"metatype, :c:data:`PyType_Type`, defines this function to distinguish " +"between statically and :ref:`dynamically allocated types `.)" +msgstr "" +"(Das einzige Beispiel dafür sind die Typen selbst. Der " +"Metatyp :c:data:`PyType_Type` legt diese Funktion fest, um zwischen statisch " +"und :ref:`dynamisch angelegten Typen ` zu unterscheiden.)" + +#: ../../c-api/typeobj.rst:2252 +msgid "" +"This slot has no default. If this field is " +"``NULL``, :c:macro:`Py_TPFLAGS_HAVE_GC` is used as the functional equivalent." +msgstr "" +"Dieser Slot hat keine Vorgabe. Ist dieses Feld ``NULL``, " +"wird :c:macro:`Py_TPFLAGS_HAVE_GC` als funktionale Entsprechung verwendet." + +#: ../../c-api/typeobj.rst:2258 +msgid "Tuple of base types." +msgstr "Tupel der Basistypen." + +#: ../../c-api/typeobj.rst:2260 ../../c-api/typeobj.rst:2281 +msgid "" +"This field should be set to ``NULL`` and treated as read-only. Python will " +"fill it in when the type is :c:func:`initialized `." +msgstr "" +"Dieses Feld sollte auf ``NULL`` gesetzt und als nur lesbar behandelt werden. " +"Python füllt es, wenn der Typ :c:func:`initialisiert ` wird." + +#: ../../c-api/typeobj.rst:2263 +msgid "For the corresponding slot ID, see :c:macro:`Py_tp_bases`." +msgstr "Die zugehörige Slot-ID steht unter :c:macro:`Py_tp_bases`." + +#: ../../c-api/typeobj.rst:2267 +msgid "" +"Multiple inheritance does not work well for statically defined types. If you " +"set ``tp_bases`` to a tuple, Python will not raise an error, but some slots " +"will only be inherited from the first base." +msgstr "" +"Mehrfachvererbung funktioniert bei statisch festgelegten Typen nicht gut. " +"Setzt du ``tp_bases`` auf ein Tupel, löst Python zwar keinen Fehler aus, " +"manche Slots werden aber nur vom ersten Basistyp geerbt." + +#: ../../c-api/typeobj.rst:2273 ../../c-api/typeobj.rst:2296 +#: ../../c-api/typeobj.rst:2313 ../../c-api/typeobj.rst:2330 +#: ../../c-api/typeobj.rst:2346 +msgid "This field is not inherited." +msgstr "Dieses Feld wird nicht vererbt." + +#: ../../c-api/typeobj.rst:2278 +msgid "" +"Tuple containing the expanded set of base types, starting with the type " +"itself and ending with :class:`object`, in Method Resolution Order." +msgstr "" +"Tupel mit der aufgefalteten Menge der Basistypen, beginnend mit dem Typ " +"selbst und endend mit :class:`object`, in der Reihenfolge der " +"Methodenauflösung." + +#: ../../c-api/typeobj.rst:2286 +msgid "" +"This field is not inherited; it is calculated fresh " +"by :c:func:`PyType_Ready`." +msgstr "" +"Dieses Feld wird nicht vererbt. Es wird von :c:func:`PyType_Ready` neu " +"berechnet." + +#: ../../c-api/typeobj.rst:2292 +msgid "Unused. Internal use only." +msgstr "Unbenutzt. Nur für den internen Gebrauch." + +#: ../../c-api/typeobj.rst:2301 +msgid "" +"A collection of subclasses. Internal use only. May be an invalid pointer." +msgstr "" +"Eine Sammlung von Unterklassen. Nur für den internen Gebrauch. Kann ein " +"ungültiger Zeiger sein." + +#: ../../c-api/typeobj.rst:2303 +msgid "" +"To get a list of subclasses, call the Python " +"method :py:meth:`~type.__subclasses__`." +msgstr "" +"Um eine Liste der Unterklassen zu bekommen, rufe die Python-" +"Methode :py:meth:`~type.__subclasses__` auf." + +#: ../../c-api/typeobj.rst:2308 +msgid "" +"For some types, this field does not hold a valid :c:expr:`PyObject*`. The " +"type was changed to :c:expr:`void*` to indicate this." +msgstr "" +"Bei manchen Typen enthält dieses Feld keinen gültigen :c:expr:`PyObject*`. " +"Der Typ wurde zu :c:expr:`void*` geändert, um das anzuzeigen." + +#: ../../c-api/typeobj.rst:2318 +msgid "" +"Weak reference list head, for weak references to this type object. Not " +"inherited. Internal use only." +msgstr "" +"Kopf der Liste schwacher Referenzen, für schwache Referenzen auf dieses " +"Typobjekt. Wird nicht vererbt. Nur für den internen Gebrauch." + +#: ../../c-api/typeobj.rst:2323 +msgid "" +"Internals detail: For the static builtin types this is always ``NULL``, even " +"if weakrefs are added. Instead, the weakrefs for each are stored on " +"``PyInterpreterState``. Use the public C-API or the internal " +"``_PyObject_GET_WEAKREFS_LISTPTR()`` macro to avoid the distinction." +msgstr "" +"Zu den Interna: Bei den statischen integrierten Typen ist das immer " +"``NULL``, auch wenn schwache Referenzen hinzugefügt werden. Die schwachen " +"Referenzen jedes einzelnen liegen stattdessen am ``PyInterpreterState``. " +"Verwende die öffentliche C-API oder das interne Makro " +"``_PyObject_GET_WEAKREFS_LISTPTR()``, um dir diese Unterscheidung zu " +"ersparen." + +#: ../../c-api/typeobj.rst:2337 +msgid "" +"This field is deprecated. Use :c:member:`~PyTypeObject.tp_finalize` instead." +msgstr "" +"Dieses Feld ist veraltet. Verwende " +"stattdessen :c:member:`~PyTypeObject.tp_finalize`." + +#: ../../c-api/typeobj.rst:2342 +msgid "Used to index into the method cache. Internal use only." +msgstr "Dient als Index in den Methoden-Cache. Nur für den internen Gebrauch." + +#: ../../c-api/typeobj.rst:2353 +msgid "" +"An optional pointer to an instance finalization function. This is the C " +"implementation of the :meth:`~object.__del__` special method. Its signature " +"is::" +msgstr "" +"Ein wahlfreier Zeiger auf eine Funktion zur Finalisierung von Instanzen. Das " +"ist die C-Umsetzung der speziellen Methode :meth:`~object.__del__`. Ihre " +"Signatur lautet::" + +#: ../../c-api/typeobj.rst:2357 +msgid "void tp_finalize(PyObject *self);" +msgstr "void tp_finalize(PyObject *self);" + +#: ../../c-api/typeobj.rst:2359 +msgid "" +"The primary purpose of finalization is to perform any non-trivial cleanup " +"that must be performed before the object is destroyed, while the object and " +"any other objects it directly or indirectly references are still in a " +"consistent state. The finalizer is allowed to execute arbitrary Python code." +msgstr "" +"Der Hauptzweck der Finalisierung ist es, nicht triviale Aufräumarbeiten zu " +"erledigen, die vor der Zerstörung des Objekts stattfinden müssen, solange " +"das Objekt und alle Objekte, die es unmittelbar oder mittelbar referenziert, " +"noch in einem widerspruchsfreien Zustand sind. Der Finalisierer darf " +"beliebigen Python-Code ausführen." + +#: ../../c-api/typeobj.rst:2365 +msgid "" +"Before Python automatically finalizes an object, some of the object's direct " +"or indirect referents might have themselves been automatically finalized. " +"However, none of the referents will have been automatically cleared " +"(:c:member:`~PyTypeObject.tp_clear`) yet." +msgstr "" +"Bevor Python ein Objekt automatisch finalisiert, können einige der " +"unmittelbar oder mittelbar referenzierten Objekte ihrerseits bereits " +"automatisch finalisiert worden sein. Keines der referenzierten Objekte wird " +"zu diesem Zeitpunkt aber bereits automatisch geleert worden sein " +"(:c:member:`~PyTypeObject.tp_clear`)." + +#: ../../c-api/typeobj.rst:2370 +msgid "" +"Other non-finalized objects might still be using a finalized object, so the " +"finalizer must leave the object in a sane state (e.g., invariants are still " +"met)." +msgstr "" +"Andere, noch nicht finalisierte Objekte verwenden ein finalisiertes Objekt " +"möglicherweise noch, deshalb muss der Finalisierer das Objekt in einem " +"vernünftigen Zustand hinterlassen (die Invarianten müssen also weiterhin " +"gelten)." + +#: ../../c-api/typeobj.rst:2376 +msgid "" +"After Python automatically finalizes an object, Python might start " +"automatically clearing (:c:member:`~PyTypeObject.tp_clear`) the object and " +"its referents (direct and indirect). Cleared objects are not guaranteed to " +"be in a consistent state; a finalized object must be able to tolerate " +"cleared referents." +msgstr "" +"Nachdem Python ein Objekt automatisch finalisiert hat, beginnt es " +"möglicherweise damit, das Objekt und die von ihm referenzierten Objekte " +"(unmittelbar und mittelbar) automatisch zu leeren " +"(:c:member:`~PyTypeObject.tp_clear`). Dass geleerte Objekte in einem " +"widerspruchsfreien Zustand sind, ist nicht zugesichert. Ein finalisiertes " +"Objekt muss geleerte referenzierte Objekte verkraften." + +#: ../../c-api/typeobj.rst:2384 +msgid "" +"An object is not guaranteed to be automatically finalized before its " +"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called. It is " +"recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " +"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " +"finalized before destruction." +msgstr "" +"Dass ein Objekt automatisch finalisiert wird, bevor sein Destruktor " +"(:c:member:`~PyTypeObject.tp_dealloc`) aufgerufen wird, ist nicht " +"zugesichert. Es wird empfohlen, am Anfang von :c:member:`!" +"tp_dealloc` :c:func:`PyObject_CallFinalizerFromDealloc` aufzurufen, damit " +"das Objekt vor der Zerstörung in jedem Fall finalisiert ist." + +#: ../../c-api/typeobj.rst:2392 +msgid "" +"The :c:member:`~PyTypeObject.tp_finalize` function can be called from any " +"thread, although the :term:`GIL` will be held." +msgstr "" +"Die Funktion :c:member:`~PyTypeObject.tp_finalize` darf aus jedem Thread " +"aufgerufen werden, der :term:`GIL` wird dabei allerdings gehalten." + +#: ../../c-api/typeobj.rst:2397 +msgid "" +"The :c:member:`!tp_finalize` function can be called during shutdown, after " +"some global variables have been deleted. See the documentation of " +"the :meth:`~object.__del__` method for details." +msgstr "" +"Die Funktion :c:member:`!tp_finalize` kann beim Herunterfahren aufgerufen " +"werden, nachdem einige globale Variablen bereits gelöscht wurden. " +"Einzelheiten stehen in der Dokumentation zur Methode :meth:`~object.__del__`." + +#: ../../c-api/typeobj.rst:2401 +msgid "" +"When Python finalizes an object, it behaves like the following algorithm:" +msgstr "" +"Wenn Python ein Objekt finalisiert, verhält es sich wie der folgende " +"Algorithmus:" + +#: ../../c-api/typeobj.rst:2403 +msgid "" +"Python might mark the object as *finalized*. Currently, Python always marks " +"objects whose type supports garbage collection (i.e., " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set " +"in :c:member:`~PyTypeObject.tp_flags`) and never marks other types of " +"objects; this might change in a future version." +msgstr "" +"Python markiert das Objekt möglicherweise als *finalisiert*. Derzeit " +"markiert Python immer Objekte, deren Typ die Speicherbereinigung unterstützt " +"(bei denen also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` " +"in :c:member:`~PyTypeObject.tp_flags` gesetzt ist), und nie andere Arten von " +"Objekten. Das kann sich in einer künftigen Version ändern." + +#: ../../c-api/typeobj.rst:2408 +msgid "" +"If the object is not marked as *finalized* and its :c:member:`!tp_finalize` " +"finalizer function is non-``NULL``, the finalizer function is called." +msgstr "" +"Ist das Objekt nicht als *finalisiert* markiert und ist seine " +"Finalisiererfunktion :c:member:`!tp_finalize` ungleich ``NULL``, wird die " +"Finalisiererfunktion aufgerufen." + +#: ../../c-api/typeobj.rst:2411 +msgid "" +"If the finalizer function was called and the finalizer made the object " +"reachable (i.e., there is a reference to the object and it is not a member " +"of a :term:`cyclic isolate`), then the finalizer is said to have " +"*resurrected* the object. It is unspecified whether the finalizer can also " +"resurrect the object by adding a new reference to the object that does not " +"make it reachable, i.e., the object is (still) a member of a cyclic isolate." +msgstr "" +"Wurde die Finalisiererfunktion aufgerufen und hat der Finalisierer das " +"Objekt wieder erreichbar gemacht (besteht also eine Referenz darauf und ist " +"es nicht Teil eines :term:`zyklischen Isolats `), sagt man, " +"der Finalisierer habe das Objekt *wieder auferstehen lassen*. Es ist nicht " +"festgelegt, ob der Finalisierer das Objekt auch dadurch auferstehen lassen " +"kann, dass er eine neue Referenz darauf hinzufügt, die es nicht erreichbar " +"macht, das Objekt also (weiterhin) Teil eines zyklischen Isolats ist." + +#: ../../c-api/typeobj.rst:2418 +msgid "" +"If the finalizer resurrected the object, the object's pending destruction is " +"canceled and the object's *finalized* mark might be removed if present. " +"Currently, Python never removes the *finalized* mark; this might change in a " +"future version." +msgstr "" +"Hat der Finalisierer das Objekt wieder auferstehen lassen, wird die " +"anstehende Zerstörung des Objekts abgebrochen, und die Markierung " +"*finalisiert* wird möglicherweise entfernt, sofern vorhanden. Derzeit " +"entfernt Python die Markierung *finalisiert* nie. Das kann sich in einer " +"künftigen Version ändern." + +#: ../../c-api/typeobj.rst:2423 +msgid "" +"*Automatic finalization* refers to any finalization performed by Python " +"except via calls to :c:func:`PyObject_CallFinalizer` " +"or :c:func:`PyObject_CallFinalizerFromDealloc`. No guarantees are made " +"about when, if, or how often an object is automatically finalized, except:" +msgstr "" +"*Automatische Finalisierung* bezeichnet jede Finalisierung, die Python " +"vornimmt, außer über Aufrufe von :c:func:`PyObject_CallFinalizer` " +"oder :c:func:`PyObject_CallFinalizerFromDealloc`. Darüber, wann, ob und wie " +"oft ein Objekt automatisch finalisiert wird, werden keine Zusagen gemacht, " +"außer:" + +#: ../../c-api/typeobj.rst:2428 +msgid "" +"Python will not automatically finalize an object if it is reachable, i.e., " +"there is a reference to it and it is not a member of a :term:`cyclic " +"isolate`." +msgstr "" +"Python finalisiert ein Objekt nicht automatisch, wenn es erreichbar ist, " +"also wenn eine Referenz darauf besteht und es nicht Teil " +"eines :term:`zyklischen Isolats ` ist." + +#: ../../c-api/typeobj.rst:2431 +msgid "" +"Python will not automatically finalize an object if finalizing it would not " +"mark the object as *finalized*. Currently, this applies to objects whose " +"type does not support garbage collection, i.e., " +"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is not set. Such objects can still " +"be manually finalized by calling :c:func:`PyObject_CallFinalizer` " +"or :c:func:`PyObject_CallFinalizerFromDealloc`." +msgstr "" +"Python finalisiert ein Objekt nicht automatisch, wenn das Finalisieren das " +"Objekt nicht als *finalisiert* markieren würde. Derzeit trifft das auf " +"Objekte zu, deren Typ die Speicherbereinigung nicht unterstützt, bei denen " +"also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` nicht gesetzt ist. Solche " +"Objekte lassen sich weiterhin von Hand finalisieren, " +"indem :c:func:`PyObject_CallFinalizer` " +"oder :c:func:`PyObject_CallFinalizerFromDealloc` aufgerufen wird." + +#: ../../c-api/typeobj.rst:2437 +msgid "" +"Python will not automatically finalize any two members of a :term:`cyclic " +"isolate` concurrently." +msgstr "" +"Python finalisiert nie zwei Mitglieder eines :term:`zyklischen Isolats " +"` gleichzeitig automatisch." + +#: ../../c-api/typeobj.rst:2439 +msgid "" +"Python will not automatically finalize an object after it has automatically " +"cleared (:c:member:`~PyTypeObject.tp_clear`) the object." +msgstr "" +"Python finalisiert ein Objekt nicht automatisch, nachdem es das Objekt " +"automatisch geleert hat (:c:member:`~PyTypeObject.tp_clear`)." + +#: ../../c-api/typeobj.rst:2441 +msgid "" +"If an object is a member of a :term:`cyclic isolate`, Python will not " +"automatically finalize it after automatically clearing " +"(see :c:member:`~PyTypeObject.tp_clear`) any other member." +msgstr "" +"Ist ein Objekt Teil eines :term:`zyklischen Isolats `, " +"finalisiert Python es nicht automatisch, nachdem es irgendein anderes " +"Mitglied automatisch geleert hat (siehe :c:member:`~PyTypeObject.tp_clear`)." + +#: ../../c-api/typeobj.rst:2444 +msgid "" +"Python will automatically finalize every member of a :term:`cyclic isolate` " +"before it automatically clears (see :c:member:`~PyTypeObject.tp_clear`) any " +"of them." +msgstr "" +"Python finalisiert jedes Mitglied eines :term:`zyklischen Isolats ` automatisch, bevor es irgendeines davon automatisch leert " +"(siehe :c:member:`~PyTypeObject.tp_clear`)." + +#: ../../c-api/typeobj.rst:2447 +msgid "" +"If Python is going to automatically clear an object " +"(:c:member:`~PyTypeObject.tp_clear`), it will automatically finalize the " +"object first." +msgstr "" +"Will Python ein Objekt automatisch leeren " +"(:c:member:`~PyTypeObject.tp_clear`), finalisiert es das Objekt vorher " +"automatisch." + +#: ../../c-api/typeobj.rst:2451 +msgid "" +"Python currently only automatically finalizes objects that are members of " +"a :term:`cyclic isolate`, but future versions might finalize objects " +"regularly before their destruction." +msgstr "" +"CPython finalisiert derzeit nur Objekte automatisch, die Teil " +"eines :term:`zyklischen Isolats ` sind. Künftige Versionen " +"könnten Objekte aber regelmäßig vor ihrer Zerstörung finalisieren." + +#: ../../c-api/typeobj.rst:2455 +msgid "" +"To manually finalize an object, do not call this function directly; " +"call :c:func:`PyObject_CallFinalizer` " +"or :c:func:`PyObject_CallFinalizerFromDealloc` instead." +msgstr "" +"Um ein Objekt von Hand zu finalisieren, rufe diese Funktion nicht " +"unmittelbar auf. Rufe stattdessen :c:func:`PyObject_CallFinalizer` " +"oder :c:func:`PyObject_CallFinalizerFromDealloc` auf." + +#: ../../c-api/typeobj.rst:2459 +msgid "" +":c:member:`~PyTypeObject.tp_finalize` should leave the current exception " +"status unchanged. The recommended way to write a non-trivial finalizer is " +"to back up the exception at the beginning by " +"calling :c:func:`PyErr_GetRaisedException` and restore the exception at the " +"end by calling :c:func:`PyErr_SetRaisedException`. If an exception is " +"encountered in the middle of the finalizer, log and clear it " +"with :c:func:`PyErr_WriteUnraisable` or :c:func:`PyErr_FormatUnraisable`. " +"For example::" +msgstr "" +":c:member:`~PyTypeObject.tp_finalize` sollte den aktuellen Ausnahmezustand " +"unverändert lassen. Der empfohlene Weg, einen nicht trivialen Finalisierer " +"zu schreiben, ist, die Ausnahme am Anfang " +"mit :c:func:`PyErr_GetRaisedException` zu sichern und am Ende " +"mit :c:func:`PyErr_SetRaisedException` wiederherzustellen. Stößt du mitten " +"im Finalisierer auf eine Ausnahme, protokolliere und lösche sie " +"mit :c:func:`PyErr_WriteUnraisable` oder :c:func:`PyErr_FormatUnraisable`. " +"Zum Beispiel::" + +#: ../../c-api/typeobj.rst:2468 +msgid "" +"static void\n" +"foo_finalize(PyObject *self)\n" +"{\n" +" // Save the current exception, if any.\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" // ...\n" +"\n" +" if (do_something_that_might_raise() != success_indicator) {\n" +" PyErr_WriteUnraisable(self);\n" +" goto done;\n" +" }\n" +"\n" +"done:\n" +" // Restore the saved exception. This silently discards any exception\n" +" // raised above, so be sure to call PyErr_WriteUnraisable first if\n" +" // necessary.\n" +" PyErr_SetRaisedException(exc);\n" +"}" +msgstr "" +"static void\n" +"foo_finalize(PyObject *self)\n" +"{\n" +" // Save the current exception, if any.\n" +" PyObject *exc = PyErr_GetRaisedException();\n" +"\n" +" // ...\n" +"\n" +" if (do_something_that_might_raise() != success_indicator) {\n" +" PyErr_WriteUnraisable(self);\n" +" goto done;\n" +" }\n" +"\n" +"done:\n" +" // Restore the saved exception. This silently discards any exception\n" +" // raised above, so be sure to call PyErr_WriteUnraisable first if\n" +" // necessary.\n" +" PyErr_SetRaisedException(exc);\n" +"}" + +#: ../../c-api/typeobj.rst:2496 +msgid "" +"Before version 3.8 it was necessary to set " +"the :c:macro:`Py_TPFLAGS_HAVE_FINALIZE` flags bit in order for this field to " +"be used. This is no longer required." +msgstr "" +"Vor Version 3.8 musste das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_FINALIZE` " +"gesetzt sein, damit dieses Feld verwendet wurde. Das ist nicht mehr nötig." + +#: ../../c-api/typeobj.rst:2502 +msgid ":pep:`442`: \"Safe object finalization\"" +msgstr ":pep:`442`: „Safe object finalization“" + +#: ../../c-api/typeobj.rst:2505 +msgid ":c:func:`PyObject_CallFinalizer`" +msgstr ":c:func:`PyObject_CallFinalizer`" + +#: ../../c-api/typeobj.rst:2506 +msgid ":c:func:`PyObject_CallFinalizerFromDealloc`" +msgstr ":c:func:`PyObject_CallFinalizerFromDealloc`" + +#: ../../c-api/typeobj.rst:2513 +msgid "" +"A :ref:`vectorcall function ` to use for calls of this type " +"object (rather than instances). In other words, ``tp_vectorcall`` can be " +"used to optimize ``type.__call__``, which typically returns a new instance " +"of *type*." +msgstr "" +"Eine :ref:`vectorcall-Funktion `, die für Aufrufe dieses " +"Typobjekts (nicht seiner Instanzen) verwendet wird. Mit anderen Worten lässt " +"sich über ``tp_vectorcall`` ``type.__call__`` optimieren, das üblicherweise " +"eine neue Instanz von *type* zurückgibt." + +#: ../../c-api/typeobj.rst:2518 +msgid "" +"As with any vectorcall function, if ``tp_vectorcall`` is ``NULL``, the " +"*tp_call* protocol (``Py_TYPE(type)->tp_call``) is used instead." +msgstr "" +"Wie bei jeder vectorcall-Funktion wird, wenn ``tp_vectorcall`` ``NULL`` ist, " +"stattdessen das *tp_call*-Protokoll (``Py_TYPE(type)->tp_call``) verwendet." + +#: ../../c-api/typeobj.rst:2523 +msgid "" +"The :ref:`vectorcall protocol ` requires that the vectorcall " +"function has the same behavior as the corresponding ``tp_call``. This means " +"that ``type->tp_vectorcall`` must match the behavior of ``Py_TYPE(type)-" +">tp_call``." +msgstr "" +"Das :ref:`vectorcall-Protokoll ` verlangt, dass die vectorcall-" +"Funktion sich genauso verhält wie das zugehörige ``tp_call``. Das bedeutet, " +"dass ``type->tp_vectorcall`` zum Verhalten von ``Py_TYPE(type)->tp_call`` " +"passen muss." + +#: ../../c-api/typeobj.rst:2528 +msgid "" +"Specifically, if *type* uses the default metaclass, ``type->tp_vectorcall`` " +"must behave the same as :c:expr:`PyType_Type->tp_call`, which:" +msgstr "" +"Verwendet *type* die voreingestellte Metaklasse, muss sich ``type-" +">tp_vectorcall`` insbesondere genauso verhalten wie :c:expr:`PyType_Type-" +">tp_call`, das:" + +#: ../../c-api/typeobj.rst:2532 +msgid "calls ``type->tp_new``," +msgstr "``type->tp_new`` aufruft," + +#: ../../c-api/typeobj.rst:2534 +msgid "" +"if the result is a subclass of *type*, calls ``type->tp_init`` on the result " +"of ``tp_new``, and" +msgstr "" +"``type->tp_init`` auf dem Ergebnis von ``tp_new`` aufruft, wenn das Ergebnis " +"eine Unterklasse von *type* ist, und" + +#: ../../c-api/typeobj.rst:2537 +msgid "returns the result of ``tp_new``." +msgstr "das Ergebnis von ``tp_new`` zurückgibt." + +#: ../../c-api/typeobj.rst:2539 +msgid "" +"Typically, ``tp_vectorcall`` is overridden to optimize this process for " +"specific :c:member:`~PyTypeObject.tp_new` " +"and :c:member:`~PyTypeObject.tp_init`. When doing this for user-subclassable " +"types, note that both can be overridden (using :py:func:`~object.__new__` " +"and :py:func:`~object.__init__`, respectively)." +msgstr "" +"Üblicherweise wird ``tp_vectorcall`` übergangen, um diesen Ablauf für " +"bestimmte :c:member:`~PyTypeObject.tp_new` " +"und :c:member:`~PyTypeObject.tp_init` zu optimieren. Tust du das bei Typen, " +"von denen Nutzer Unterklassen bilden können, beachte, dass beide übergangen " +"werden können (über :py:func:`~object.__new__` " +"beziehungsweise :py:func:`~object.__init__`)." + +#: ../../c-api/typeobj.rst:2550 +msgid "This field is never inherited." +msgstr "Dieses Feld wird nie vererbt." + +#: ../../c-api/typeobj.rst:2552 +msgid "(the field exists since 3.8 but it's only used since 3.9)" +msgstr "(das Feld gibt es seit 3.8, verwendet wird es aber erst seit 3.9)" + +#: ../../c-api/typeobj.rst:2557 +msgid "Internal. Do not use." +msgstr "Intern. Nicht verwenden." + +#: ../../c-api/typeobj.rst:2565 +msgid "Static Types" +msgstr "Statische Typen" + +#: ../../c-api/typeobj.rst:2567 +msgid "" +"Traditionally, types defined in C code are *static*, that is, a " +"static :c:type:`PyTypeObject` structure is defined directly in code and " +"initialized using :c:func:`PyType_Ready`." +msgstr "" +"Herkömmlich sind Typen, die in C-Code festgelegt werden, *statisch*, das " +"heißt: Eine statische :c:type:`PyTypeObject`-Struktur wird unmittelbar im " +"Code festgelegt und über :c:func:`PyType_Ready` initialisiert." + +#: ../../c-api/typeobj.rst:2571 +msgid "" +"This results in types that are limited relative to types defined in Python:" +msgstr "" +"Daraus ergeben sich Typen, die gegenüber in Python festgelegten Typen " +"eingeschränkt sind:" + +#: ../../c-api/typeobj.rst:2573 +msgid "" +"Static types are limited to one base, i.e. they cannot use multiple " +"inheritance." +msgstr "" +"Statische Typen sind auf einen Basistyp beschränkt, können also keine " +"Mehrfachvererbung nutzen." + +#: ../../c-api/typeobj.rst:2575 +msgid "" +"Static type objects (but not necessarily their instances) are immutable. It " +"is not possible to add or modify the type object's attributes from Python." +msgstr "" +"Statische Typobjekte (nicht unbedingt aber ihre Instanzen) sind " +"unveränderlich. Die Attribute des Typobjekts lassen sich aus Python heraus " +"weder hinzufügen noch ändern." + +#: ../../c-api/typeobj.rst:2577 +msgid "" +"Static type objects are shared across :ref:`sub-interpreters `, so they should not include any subinterpreter-" +"specific state." +msgstr "" +"Statische Typobjekte werden von allen :ref:`Unterinterpretern ` gemeinsam genutzt, sie sollten deshalb keinen Zustand " +"enthalten, der einem einzelnen Unterinterpreter eigen ist." + +#: ../../c-api/typeobj.rst:2581 +msgid "" +"Also, since :c:type:`PyTypeObject` is only part of the :ref:`Limited API " +"` as an opaque struct, any extension modules using static " +"types must be compiled for a specific Python minor version." +msgstr "" +"Da :c:type:`PyTypeObject` außerdem nur als undurchsichtige Struktur Teil " +"der :ref:`Limited API ` ist, müssen Erweiterungsmodule, die " +"statische Typen verwenden, für eine bestimmte Python-Nebenversion kompiliert " +"werden." + +#: ../../c-api/typeobj.rst:2589 +msgid "Heap Types" +msgstr "Heap-Typen" + +#: ../../c-api/typeobj.rst:2591 +msgid "" +"An alternative to :ref:`static types ` is *heap-allocated " +"types*, or *heap types* for short, which correspond closely to classes " +"created by Python's ``class`` statement. Heap types have " +"the :c:macro:`Py_TPFLAGS_HEAPTYPE` flag set." +msgstr "" +"Eine Alternative zu :ref:`statischen Typen ` sind *auf dem " +"Heap angelegte Typen*, kurz *Heap-Typen*, die den Klassen, die Pythons " +"``class``-Anweisung erzeugt, sehr nahekommen. Bei Heap-Typen ist das " +"Flag :c:macro:`Py_TPFLAGS_HEAPTYPE` gesetzt." + +#: ../../c-api/typeobj.rst:2596 +msgid "" +"This is done by filling a :c:type:`PyType_Spec` structure and " +"calling :c:func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:`PyType_FromModuleAndSpec`, " +"or :c:func:`PyType_FromMetaclass`." +msgstr "" +"Das geschieht, indem eine :c:type:`PyType_Spec`-Struktur gefüllt " +"und :c:func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:`PyType_FromModuleAndSpec` " +"oder :c:func:`PyType_FromMetaclass` aufgerufen wird." + +#: ../../c-api/typeobj.rst:2604 +msgid "Number Object Structures" +msgstr "Strukturen für Zahlenobjekte" + +#: ../../c-api/typeobj.rst:2608 +msgid "" +"This structure holds pointers to the functions which an object uses to " +"implement the number protocol. Each function is used by the function of " +"similar name documented in the :ref:`number` section." +msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " +"Zahlenprotokoll umsetzt. Jede Funktion wird von der gleichnamigen Funktion " +"verwendet, die im Abschnitt :ref:`number` dokumentiert ist." + +#: ../../c-api/typeobj.rst:2614 ../../c-api/typeobj.rst:3086 +msgid "Here is the structure definition::" +msgstr "Hier die Strukturdefinition::" + +#: ../../c-api/typeobj.rst:2616 +msgid "" +"typedef struct {\n" +" binaryfunc nb_add;\n" +" binaryfunc nb_subtract;\n" +" binaryfunc nb_multiply;\n" +" binaryfunc nb_remainder;\n" +" binaryfunc nb_divmod;\n" +" ternaryfunc nb_power;\n" +" unaryfunc nb_negative;\n" +" unaryfunc nb_positive;\n" +" unaryfunc nb_absolute;\n" +" inquiry nb_bool;\n" +" unaryfunc nb_invert;\n" +" binaryfunc nb_lshift;\n" +" binaryfunc nb_rshift;\n" +" binaryfunc nb_and;\n" +" binaryfunc nb_xor;\n" +" binaryfunc nb_or;\n" +" unaryfunc nb_int;\n" +" void *nb_reserved;\n" +" unaryfunc nb_float;\n" +"\n" +" binaryfunc nb_inplace_add;\n" +" binaryfunc nb_inplace_subtract;\n" +" binaryfunc nb_inplace_multiply;\n" +" binaryfunc nb_inplace_remainder;\n" +" ternaryfunc nb_inplace_power;\n" +" binaryfunc nb_inplace_lshift;\n" +" binaryfunc nb_inplace_rshift;\n" +" binaryfunc nb_inplace_and;\n" +" binaryfunc nb_inplace_xor;\n" +" binaryfunc nb_inplace_or;\n" +"\n" +" binaryfunc nb_floor_divide;\n" +" binaryfunc nb_true_divide;\n" +" binaryfunc nb_inplace_floor_divide;\n" +" binaryfunc nb_inplace_true_divide;\n" +"\n" +" unaryfunc nb_index;\n" +"\n" +" binaryfunc nb_matrix_multiply;\n" +" binaryfunc nb_inplace_matrix_multiply;\n" +"} PyNumberMethods;" +msgstr "" +"typedef struct {\n" +" binaryfunc nb_add;\n" +" binaryfunc nb_subtract;\n" +" binaryfunc nb_multiply;\n" +" binaryfunc nb_remainder;\n" +" binaryfunc nb_divmod;\n" +" ternaryfunc nb_power;\n" +" unaryfunc nb_negative;\n" +" unaryfunc nb_positive;\n" +" unaryfunc nb_absolute;\n" +" inquiry nb_bool;\n" +" unaryfunc nb_invert;\n" +" binaryfunc nb_lshift;\n" +" binaryfunc nb_rshift;\n" +" binaryfunc nb_and;\n" +" binaryfunc nb_xor;\n" +" binaryfunc nb_or;\n" +" unaryfunc nb_int;\n" +" void *nb_reserved;\n" +" unaryfunc nb_float;\n" +"\n" +" binaryfunc nb_inplace_add;\n" +" binaryfunc nb_inplace_subtract;\n" +" binaryfunc nb_inplace_multiply;\n" +" binaryfunc nb_inplace_remainder;\n" +" ternaryfunc nb_inplace_power;\n" +" binaryfunc nb_inplace_lshift;\n" +" binaryfunc nb_inplace_rshift;\n" +" binaryfunc nb_inplace_and;\n" +" binaryfunc nb_inplace_xor;\n" +" binaryfunc nb_inplace_or;\n" +"\n" +" binaryfunc nb_floor_divide;\n" +" binaryfunc nb_true_divide;\n" +" binaryfunc nb_inplace_floor_divide;\n" +" binaryfunc nb_inplace_true_divide;\n" +"\n" +" unaryfunc nb_index;\n" +"\n" +" binaryfunc nb_matrix_multiply;\n" +" binaryfunc nb_inplace_matrix_multiply;\n" +"} PyNumberMethods;" + +#: ../../c-api/typeobj.rst:2661 +msgid "" +"Binary and ternary functions must check the type of all their operands, and " +"implement the necessary conversions (at least one of the operands is an " +"instance of the defined type). If the operation is not defined for the " +"given operands, binary and ternary functions must return " +"``Py_NotImplemented``, if another error occurred they must return ``NULL`` " +"and set an exception." +msgstr "" +"Binäre und ternäre Funktionen müssen den Typ all ihrer Operanden prüfen und " +"die nötigen Umwandlungen vornehmen (mindestens einer der Operanden ist eine " +"Instanz des festgelegten Typs). Ist der Vorgang für die gegebenen Operanden " +"nicht festgelegt, müssen binäre und ternäre Funktionen ``Py_NotImplemented`` " +"zurückgeben. Trat ein anderer Fehler auf, müssen sie ``NULL`` zurückgeben " +"und eine Ausnahme setzen." + +#: ../../c-api/typeobj.rst:2670 +msgid "" +"The :c:member:`~PyNumberMethods.nb_reserved` field should always be " +"``NULL``. It was previously called :c:member:`!nb_long`, and was renamed in " +"Python 3.0.1." +msgstr "" +"Das Feld :c:member:`~PyNumberMethods.nb_reserved` sollte immer ``NULL`` " +"sein. Es hieß früher :c:member:`!nb_long` und wurde in Python 3.0.1 " +"umbenannt." + +#: ../../c-api/typeobj.rst:2821 +msgid "Mapping Object Structures" +msgstr "Strukturen für Mapping-Objekte" + +#: ../../c-api/typeobj.rst:2825 +msgid "" +"This structure holds pointers to the functions which an object uses to " +"implement the mapping protocol. It has three members:" +msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " +"Mapping-Protokoll umsetzt. Sie hat drei Member:" + +#: ../../c-api/typeobj.rst:2832 +msgid "" +"This function is used by :c:func:`PyMapping_Size` " +"and :c:func:`PyObject_Size`, and has the same signature. This slot may be " +"set to ``NULL`` if the object has no defined length." +msgstr "" +"Diese Funktion wird von :c:func:`PyMapping_Size` und :c:func:`PyObject_Size` " +"verwendet und hat dieselbe Signatur. Dieser Slot darf auf ``NULL`` gesetzt " +"werden, wenn das Objekt keine festgelegte Länge hat." + +#: ../../c-api/typeobj.rst:2840 +msgid "" +"This function is used by :c:func:`PyObject_GetItem` " +"and :c:func:`PySequence_GetSlice`, and has the same signature as :c:func:`!" +"PyObject_GetItem`. This slot must be filled for " +"the :c:func:`PyMapping_Check` function to return ``1``, it can be ``NULL`` " +"otherwise." +msgstr "" +"Diese Funktion wird von :c:func:`PyObject_GetItem` " +"und :c:func:`PySequence_GetSlice` verwendet und hat dieselbe Signatur " +"wie :c:func:`!PyObject_GetItem`. Dieser Slot muss gefüllt sein, damit die " +"Funktion :c:func:`PyMapping_Check` ``1`` zurückgibt. Andernfalls darf er " +"``NULL`` sein." + +#: ../../c-api/typeobj.rst:2850 +msgid "" +"This function is used " +"by :c:func:`PyObject_SetItem`, :c:func:`PyObject_DelItem`, :c:func:`PySequence_SetSlice` " +"and :c:func:`PySequence_DelSlice`. It has the same signature as :c:func:`!" +"PyObject_SetItem`, but *v* can also be set to ``NULL`` to delete an item. " +"If this slot is ``NULL``, the object does not support item assignment and " +"deletion." +msgstr "" +"Diese Funktion wird " +"von :c:func:`PyObject_SetItem`, :c:func:`PyObject_DelItem`, :c:func:`PySequence_SetSlice` " +"und :c:func:`PySequence_DelSlice` verwendet. Sie hat dieselbe Signatur " +"wie :c:func:`!PyObject_SetItem`, *v* darf aber auch auf ``NULL`` gesetzt " +"werden, um ein Element zu löschen. Ist dieser Slot ``NULL``, unterstützt das " +"Objekt das Zuweisen und Löschen von Elementen nicht." + +#: ../../c-api/typeobj.rst:2861 +msgid "Sequence Object Structures" +msgstr "Strukturen für Sequenzobjekte" + +#: ../../c-api/typeobj.rst:2865 +msgid "" +"This structure holds pointers to the functions which an object uses to " +"implement the sequence protocol." +msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " +"Sequenzprotokoll umsetzt." + +#: ../../c-api/typeobj.rst:2872 +msgid "" +"This function is used by :c:func:`PySequence_Size` " +"and :c:func:`PyObject_Size`, and has the same signature. It is also used " +"for handling negative indices via the :c:member:`~PySequenceMethods.sq_item` " +"and the :c:member:`~PySequenceMethods.sq_ass_item` slots." +msgstr "" +"Diese Funktion wird von :c:func:`PySequence_Size` " +"und :c:func:`PyObject_Size` verwendet und hat dieselbe Signatur. Sie dient " +"außerdem dem Umgang mit negativen Indizes über die " +"Slots :c:member:`~PySequenceMethods.sq_item` " +"und :c:member:`~PySequenceMethods.sq_ass_item`." + +#: ../../c-api/typeobj.rst:2881 +msgid "" +"This function is used by :c:func:`PySequence_Concat` and has the same " +"signature. It is also used by the ``+`` operator, after trying the numeric " +"addition via the :c:member:`~PyNumberMethods.nb_add` slot." +msgstr "" +"Diese Funktion wird von :c:func:`PySequence_Concat` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem vom Operator ``+`` verwendet, nachdem " +"die numerische Addition über den Slot :c:member:`~PyNumberMethods.nb_add` " +"versucht wurde." + +#: ../../c-api/typeobj.rst:2889 +msgid "" +"This function is used by :c:func:`PySequence_Repeat` and has the same " +"signature. It is also used by the ``*`` operator, after trying numeric " +"multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot." +msgstr "" +"Diese Funktion wird von :c:func:`PySequence_Repeat` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem vom Operator ``*`` verwendet, nachdem " +"die numerische Multiplikation über den " +"Slot :c:member:`~PyNumberMethods.nb_multiply` versucht wurde." + +#: ../../c-api/typeobj.rst:2897 +msgid "" +"This function is used by :c:func:`PySequence_GetItem` and has the same " +"signature. It is also used by :c:func:`PyObject_GetItem`, after trying the " +"subscription via the :c:member:`~PyMappingMethods.mp_subscript` slot. This " +"slot must be filled for the :c:func:`PySequence_Check` function to return " +"``1``, it can be ``NULL`` otherwise." +msgstr "" +"Diese Funktion wird von :c:func:`PySequence_GetItem` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem von :c:func:`PyObject_GetItem` " +"verwendet, nachdem der Indexzugriff über den " +"Slot :c:member:`~PyMappingMethods.mp_subscript` versucht wurde. Dieser Slot " +"muss gefüllt sein, damit die Funktion :c:func:`PySequence_Check` ``1`` " +"zurückgibt. Andernfalls darf er ``NULL`` sein." + +#: ../../c-api/typeobj.rst:2903 +msgid "" +"Negative indexes are handled as follows: if " +"the :c:member:`~PySequenceMethods.sq_length` slot is filled, it is called " +"and the sequence length is used to compute a positive index which is passed " +"to :c:member:`~PySequenceMethods.sq_item`. If :c:member:`!sq_length` is " +"``NULL``, the index is passed as is to the function." +msgstr "" +"Mit negativen Indizes wird so umgegangen: Ist der " +"Slot :c:member:`~PySequenceMethods.sq_length` gefüllt, wird er aufgerufen, " +"und über die Länge der Sequenz wird ein positiver Index berechnet, der " +"an :c:member:`~PySequenceMethods.sq_item` übergeben wird. Ist :c:member:`!" +"sq_length` ``NULL``, wird der Index unverändert an die Funktion übergeben." + +#: ../../c-api/typeobj.rst:2912 +msgid "" +"This function is used by :c:func:`PySequence_SetItem` and has the same " +"signature. It is also used by :c:func:`PyObject_SetItem` " +"and :c:func:`PyObject_DelItem`, after trying the item assignment and " +"deletion via the :c:member:`~PyMappingMethods.mp_ass_subscript` slot. This " +"slot may be left to ``NULL`` if the object does not support item assignment " +"and deletion." +msgstr "" +"Diese Funktion wird von :c:func:`PySequence_SetItem` verwendet und hat " +"dieselbe Signatur. Sie wird außerdem von :c:func:`PyObject_SetItem` " +"und :c:func:`PyObject_DelItem` verwendet, nachdem das Zuweisen und Löschen " +"von Elementen über den Slot :c:member:`~PyMappingMethods.mp_ass_subscript` " +"versucht wurde. Dieser Slot darf ``NULL`` bleiben, wenn das Objekt das " +"Zuweisen und Löschen von Elementen nicht unterstützt." + +#: ../../c-api/typeobj.rst:2923 +msgid "" +"This function may be used by :c:func:`PySequence_Contains` and has the same " +"signature. This slot may be left to ``NULL``, in this case :c:func:`!" +"PySequence_Contains` simply traverses the sequence until it finds a match." +msgstr "" +"Diese Funktion kann von :c:func:`PySequence_Contains` verwendet werden und " +"hat dieselbe Signatur. Dieser Slot darf ``NULL`` bleiben. In diesem Fall " +"durchläuft :c:func:`!PySequence_Contains` die Sequenz einfach, bis es eine " +"Übereinstimmung findet." + +#: ../../c-api/typeobj.rst:2932 +msgid "" +"This function is used by :c:func:`PySequence_InPlaceConcat` and has the same " +"signature. It should modify its first operand, and return it. This slot " +"may be left to ``NULL``, in this case :c:func:`!PySequence_InPlaceConcat` " +"will fall back to :c:func:`PySequence_Concat`. It is also used by the " +"augmented assignment ``+=``, after trying numeric in-place addition via " +"the :c:member:`~PyNumberMethods.nb_inplace_add` slot." +msgstr "" +"Diese Funktion wird von :c:func:`PySequence_InPlaceConcat` verwendet und hat " +"dieselbe Signatur. Sie sollte ihren ersten Operanden ändern und zurückgeben. " +"Dieser Slot darf ``NULL`` bleiben. In diesem Fall fällt :c:func:`!" +"PySequence_InPlaceConcat` auf :c:func:`PySequence_Concat` zurück. Sie wird " +"außerdem von der erweiterten Zuweisung ``+=`` verwendet, nachdem die " +"numerische Addition an Ort und Stelle über den " +"Slot :c:member:`~PyNumberMethods.nb_inplace_add` versucht wurde." + +#: ../../c-api/typeobj.rst:2943 +msgid "" +"This function is used by :c:func:`PySequence_InPlaceRepeat` and has the same " +"signature. It should modify its first operand, and return it. This slot " +"may be left to ``NULL``, in this case :c:func:`!PySequence_InPlaceRepeat` " +"will fall back to :c:func:`PySequence_Repeat`. It is also used by the " +"augmented assignment ``*=``, after trying numeric in-place multiplication " +"via the :c:member:`~PyNumberMethods.nb_inplace_multiply` slot." +msgstr "" +"Diese Funktion wird von :c:func:`PySequence_InPlaceRepeat` verwendet und hat " +"dieselbe Signatur. Sie sollte ihren ersten Operanden ändern und zurückgeben. " +"Dieser Slot darf ``NULL`` bleiben. In diesem Fall fällt :c:func:`!" +"PySequence_InPlaceRepeat` auf :c:func:`PySequence_Repeat` zurück. Sie wird " +"außerdem von der erweiterten Zuweisung ``*=`` verwendet, nachdem die " +"numerische Multiplikation an Ort und Stelle über den " +"Slot :c:member:`~PyNumberMethods.nb_inplace_multiply` versucht wurde." + +#: ../../c-api/typeobj.rst:2954 +msgid "Buffer Object Structures" +msgstr "Strukturen für Pufferobjekte" + +#: ../../c-api/typeobj.rst:2958 +msgid "" +"This structure holds pointers to the functions required by the :ref:`Buffer " +"protocol `. The protocol defines how an exporter object can " +"expose its internal data to consumer objects." +msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, die das :ref:`Puffer-" +"Protokoll ` verlangt. Das Protokoll legt fest, wie ein " +"exportierendes Objekt seine internen Daten für verbrauchende Objekte " +"zugänglich machen kann." + +#: ../../c-api/typeobj.rst:2966 ../../c-api/typeobj.rst:3035 +#: ../../c-api/typeobj.rst:3099 ../../c-api/typeobj.rst:3112 +#: ../../c-api/typeobj.rst:3126 ../../c-api/typeobj.rst:3138 +msgid "The signature of this function is::" +msgstr "Die Signatur dieser Funktion lautet::" + +#: ../../c-api/typeobj.rst:2968 +msgid "int (PyObject *exporter, Py_buffer *view, int flags);" +msgstr "int (PyObject *exporter, Py_buffer *view, int flags);" + +#: ../../c-api/typeobj.rst:2970 +msgid "" +"Handle a request to *exporter* to fill in *view* as specified by *flags*. " +"Except for point (3), an implementation of this function MUST take these " +"steps:" +msgstr "" +"Behandelt eine Anfrage an *exporter*, *view* so zu füllen, wie *flags* es " +"angibt. Abgesehen von Punkt (3) MUSS eine Umsetzung dieser Funktion diese " +"Schritte ausführen:" + +#: ../../c-api/typeobj.rst:2974 +msgid "" +"Check if the request can be met. If not, raise :exc:`BufferError`, set " +"``view->obj`` to ``NULL`` and return ``-1``." +msgstr "" +"Prüfen, ob die Anfrage erfüllt werden kann. Wenn nicht, :exc:`BufferError` " +"auslösen, ``view->obj`` auf ``NULL`` setzen und ``-1`` zurückgeben." + +#: ../../c-api/typeobj.rst:2977 +msgid "Fill in the requested fields." +msgstr "Die angefragten Felder füllen." + +#: ../../c-api/typeobj.rst:2979 +msgid "Increment an internal counter for the number of exports." +msgstr "Einen internen Zähler für die Anzahl der Exporte erhöhen." + +#: ../../c-api/typeobj.rst:2981 +msgid "Set ``view->obj`` to *exporter* and increment ``view->obj``." +msgstr "``view->obj`` auf *exporter* setzen und ``view->obj`` erhöhen." + +#: ../../c-api/typeobj.rst:2983 +msgid "Return ``0``." +msgstr "``0`` zurückgeben." + +#: ../../c-api/typeobj.rst:2985 ../../c-api/typeobj.rst:3048 +msgid "**Thread safety:**" +msgstr "**Thread-Sicherheit:**" + +#: ../../c-api/typeobj.rst:2987 +msgid "In the :term:`free-threaded build`, implementations must ensure:" +msgstr "" +"Im :term:`Build mit freien Threads ` müssen Umsetzungen " +"sicherstellen:" + +#: ../../c-api/typeobj.rst:2989 +msgid "The export counter increment in step (3) is atomic." +msgstr "Das Erhöhen des Exportzählers in Schritt (3) ist atomar." + +#: ../../c-api/typeobj.rst:2991 +msgid "" +"The underlying buffer data remains valid and at a stable memory location for " +"the lifetime of all exports." +msgstr "" +"Die zugrunde liegenden Pufferdaten bleiben gültig und an einer " +"unveränderlichen Speicherstelle, solange Exporte bestehen." + +#: ../../c-api/typeobj.rst:2994 +msgid "" +"For objects that support resizing or reallocation (such " +"as :class:`bytearray`), the export counter is checked atomically before such " +"operations, and :exc:`BufferError` is raised if exports exist." +msgstr "" +"Bei Objekten, die sich in der Größe ändern oder neu belegen lassen " +"(wie :class:`bytearray`), wird der Exportzähler vor solchen Vorgängen atomar " +"geprüft, und es wird :exc:`BufferError` ausgelöst, wenn Exporte bestehen." + +#: ../../c-api/typeobj.rst:2998 +msgid "The function is safe to call concurrently from multiple threads." +msgstr "" +"Die Funktion lässt sich sicher gleichzeitig aus mehreren Threads aufrufen." + +#: ../../c-api/typeobj.rst:3000 +msgid "" +"See also :ref:`thread-safety-memoryview` for the Python-level thread safety " +"guarantees of :class:`memoryview` objects." +msgstr "" +"Siehe auch :ref:`thread-safety-memoryview` zu den Zusagen zur Thread-" +"Sicherheit von :class:`memoryview`-Objekten auf Python-Ebene." + +#: ../../c-api/typeobj.rst:3003 +msgid "" +"If *exporter* is part of a chain or tree of buffer providers, two main " +"schemes can be used:" +msgstr "" +"Ist *exporter* Teil einer Kette oder eines Baums von Pufferanbietern, sind " +"zwei grundlegende Vorgehensweisen möglich:" + +#: ../../c-api/typeobj.rst:3006 +msgid "" +"Re-export: Each member of the tree acts as the exporting object and sets " +"``view->obj`` to a new reference to itself." +msgstr "" +"Weiterexport: Jedes Mitglied des Baums tritt als exportierendes Objekt auf " +"und setzt ``view->obj`` auf eine neue Referenz auf sich selbst." + +#: ../../c-api/typeobj.rst:3009 +msgid "" +"Redirect: The buffer request is redirected to the root object of the tree. " +"Here, ``view->obj`` will be a new reference to the root object." +msgstr "" +"Umleitung: Die Pufferanfrage wird an das Wurzelobjekt des Baums umgeleitet. " +"Hier ist ``view->obj`` eine neue Referenz auf das Wurzelobjekt." + +#: ../../c-api/typeobj.rst:3013 +msgid "" +"The individual fields of *view* are described in section :ref:`Buffer " +"structure `, the rules how an exporter must react to " +"specific requests are in section :ref:`Buffer request types `." +msgstr "" +"Die einzelnen Felder von *view* sind im Abschnitt :ref:`Pufferstruktur " +"` beschrieben, die Regeln, wie ein Exporteur auf bestimmte " +"Anfragen reagieren muss, stehen im Abschnitt :ref:`Arten von Pufferanfragen " +"`." + +#: ../../c-api/typeobj.rst:3018 +msgid "" +"All memory pointed to in the :c:type:`Py_buffer` structure belongs to the " +"exporter and must remain valid until there are no consumers " +"left. :c:member:`~Py_buffer.format`, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`, :c:member:`~Py_buffer.suboffsets` " +"and :c:member:`~Py_buffer.internal` are read-only for the consumer." +msgstr "" +"Aller Speicher, auf den die Struktur :c:type:`Py_buffer` zeigt, gehört dem " +"Exporteur und muss gültig bleiben, solange noch Verbraucher vorhanden " +"sind. :c:member:`~Py_buffer.format`, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`, :c:member:`~Py_buffer.suboffsets` " +"und :c:member:`~Py_buffer.internal` sind für den Verbraucher nur lesbar." + +#: ../../c-api/typeobj.rst:3025 +msgid "" +":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes " +"buffer while dealing correctly with all request types." +msgstr "" +":c:func:`PyBuffer_FillInfo` bietet einen einfachen Weg, einen schlichten " +"Bytes-Puffer zugänglich zu machen und dabei alle Arten von Anfragen richtig " +"zu behandeln." + +#: ../../c-api/typeobj.rst:3028 +msgid "" +":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps " +"this function." +msgstr "" +":c:func:`PyObject_GetBuffer` ist die Schnittstelle für den Verbraucher, die " +"diese Funktion umhüllt." + +#: ../../c-api/typeobj.rst:3037 +msgid "void (PyObject *exporter, Py_buffer *view);" +msgstr "void (PyObject *exporter, Py_buffer *view);" + +#: ../../c-api/typeobj.rst:3039 +msgid "" +"Handle a request to release the resources of the buffer. If no resources " +"need to be released, :c:member:`PyBufferProcs.bf_releasebuffer` may be " +"``NULL``. Otherwise, a standard implementation of this function will take " +"these optional steps:" +msgstr "" +"Behandelt eine Anfrage, die Ressourcen des Puffers freizugeben. Müssen keine " +"Ressourcen freigegeben werden, " +"darf :c:member:`PyBufferProcs.bf_releasebuffer` ``NULL`` sein. Andernfalls " +"führt eine gewöhnliche Umsetzung dieser Funktion diese wahlfreien Schritte " +"aus:" + +#: ../../c-api/typeobj.rst:3044 +msgid "Decrement an internal counter for the number of exports." +msgstr "Einen internen Zähler für die Anzahl der Exporte verringern." + +#: ../../c-api/typeobj.rst:3046 +msgid "If the counter is ``0``, free all memory associated with *view*." +msgstr "Ist der Zähler ``0``, allen zu *view* gehörenden Speicher freigeben." + +#: ../../c-api/typeobj.rst:3050 +msgid "In the :term:`free-threaded build`:" +msgstr "Im :term:`Build mit freien Threads `:" + +#: ../../c-api/typeobj.rst:3052 +msgid "The export counter decrement in step (1) must be atomic." +msgstr "Das Verringern des Exportzählers in Schritt (1) muss atomar sein." + +#: ../../c-api/typeobj.rst:3054 +msgid "" +"Resource cleanup when the counter reaches zero must be done atomically, as " +"the final release may race with concurrent releases from other threads and " +"deallocation must only happen once." +msgstr "" +"Das Aufräumen der Ressourcen, wenn der Zähler null erreicht, muss atomar " +"geschehen, weil die letzte Freigabe mit gleichzeitigen Freigaben anderer " +"Threads um die Wette laufen kann und die Speicherfreigabe nur ein einziges " +"Mal geschehen darf." + +#: ../../c-api/typeobj.rst:3058 +msgid "" +"The exporter MUST use the :c:member:`~Py_buffer.internal` field to keep " +"track of buffer-specific resources. This field is guaranteed to remain " +"constant, while a consumer MAY pass a copy of the original buffer as the " +"*view* argument." +msgstr "" +"Der Exporteur MUSS das Feld :c:member:`~Py_buffer.internal` verwenden, um " +"pufferspezifische Ressourcen zu verfolgen. Dieses Feld bleibt zugesichert " +"unverändert, während ein Verbraucher dem Argument *view* eine Kopie des " +"ursprünglichen Puffers übergeben DARF." + +#: ../../c-api/typeobj.rst:3064 +msgid "" +"This function MUST NOT decrement ``view->obj``, since that is done " +"automatically in :c:func:`PyBuffer_Release` (this scheme is useful for " +"breaking reference cycles)." +msgstr "" +"Diese Funktion DARF ``view->obj`` NICHT verringern, weil das " +"in :c:func:`PyBuffer_Release` automatisch geschieht (diese Vorgehensweise " +"ist nützlich, um Referenzzyklen aufzubrechen)." + +#: ../../c-api/typeobj.rst:3069 +msgid "" +":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this " +"function." +msgstr "" +":c:func:`PyBuffer_Release` ist die Schnittstelle für den Verbraucher, die " +"diese Funktion umhüllt." + +#: ../../c-api/typeobj.rst:3077 +msgid "Async Object Structures" +msgstr "Strukturen für Async-Objekte" + +#: ../../c-api/typeobj.rst:3083 +msgid "" +"This structure holds pointers to the functions required to " +"implement :term:`awaitable` and :term:`asynchronous iterator` objects." +msgstr "" +"Diese Struktur enthält Zeiger auf die Funktionen, die nötig sind, " +"um :term:`abwartbare ` Objekte und :term:`asynchrone Iteratoren " +"` umzusetzen." + +#: ../../c-api/typeobj.rst:3088 +msgid "" +"typedef struct {\n" +" unaryfunc am_await;\n" +" unaryfunc am_aiter;\n" +" unaryfunc am_anext;\n" +" sendfunc am_send;\n" +"} PyAsyncMethods;" +msgstr "" +"typedef struct {\n" +" unaryfunc am_await;\n" +" unaryfunc am_aiter;\n" +" unaryfunc am_anext;\n" +" sendfunc am_send;\n" +"} PyAsyncMethods;" + +#: ../../c-api/typeobj.rst:3101 +msgid "PyObject *am_await(PyObject *self);" +msgstr "PyObject *am_await(PyObject *self);" + +#: ../../c-api/typeobj.rst:3103 +msgid "" +"The returned object must be an :term:`iterator`, i.e. :c:func:`PyIter_Check` " +"must return ``1`` for it." +msgstr "" +"Das zurückgegebene Objekt muss ein :term:`Iterator ` " +"sein, :c:func:`PyIter_Check` muss dafür also ``1`` zurückgeben." + +#: ../../c-api/typeobj.rst:3106 +msgid "" +"This slot may be set to ``NULL`` if an object is not an :term:`awaitable`." +msgstr "" +"Dieser Slot darf auf ``NULL`` gesetzt werden, wenn ein Objekt " +"nicht :term:`abwartbar ` ist." + +#: ../../c-api/typeobj.rst:3114 +msgid "PyObject *am_aiter(PyObject *self);" +msgstr "PyObject *am_aiter(PyObject *self);" + +#: ../../c-api/typeobj.rst:3116 +msgid "" +"Must return an :term:`asynchronous iterator` object. " +"See :meth:`~object.__anext__` for details." +msgstr "" +"Muss ein Objekt zurückgeben, das ein :term:`asynchroner Iterator " +"` ist. Einzelheiten stehen " +"unter :meth:`~object.__anext__`." + +#: ../../c-api/typeobj.rst:3119 +msgid "" +"This slot may be set to ``NULL`` if an object does not implement " +"asynchronous iteration protocol." +msgstr "" +"Dieser Slot darf auf ``NULL`` gesetzt werden, wenn ein Objekt das Protokoll " +"für asynchrone Iteration nicht umsetzt." + +#: ../../c-api/typeobj.rst:3128 +msgid "PyObject *am_anext(PyObject *self);" +msgstr "PyObject *am_anext(PyObject *self);" + +#: ../../c-api/typeobj.rst:3130 +msgid "" +"Must return an :term:`awaitable` object. See :meth:`~object.__anext__` for " +"details. This slot may be set to ``NULL``." +msgstr "" +"Muss ein :term:`abwartbares ` Objekt zurückgeben. Einzelheiten " +"stehen unter :meth:`~object.__anext__`. Dieser Slot darf auf ``NULL`` " +"gesetzt werden." + +#: ../../c-api/typeobj.rst:3140 +msgid "PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" +msgstr "" +"PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" + +#: ../../c-api/typeobj.rst:3142 +msgid "" +"See :c:func:`PyIter_Send` for details. This slot may be set to ``NULL``." +msgstr "" +"Einzelheiten stehen unter :c:func:`PyIter_Send`. Dieser Slot darf auf " +"``NULL`` gesetzt werden." + +#: ../../c-api/typeobj.rst:3151 +msgid "Slot Type typedefs" +msgstr "Typedefs für Slot-Typen" + +#: ../../c-api/typeobj.rst:3155 +msgid "" +"The purpose of this function is to separate memory allocation from memory " +"initialization. It should return a pointer to a block of memory of adequate " +"length for the instance, suitably aligned, and initialized to zeros, but " +"with :c:member:`~PyObject.ob_refcnt` set to ``1`` " +"and :c:member:`~PyObject.ob_type` set to the type argument. If the " +"type's :c:member:`~PyTypeObject.tp_itemsize` is non-zero, the " +"object's :c:member:`~PyVarObject.ob_size` field should be initialized to " +"*nitems* and the length of the allocated memory block should be " +"``tp_basicsize + nitems*tp_itemsize``, rounded up to a multiple of " +"``sizeof(void*)``; otherwise, *nitems* is not used and the length of the " +"block should be :c:member:`~PyTypeObject.tp_basicsize`." +msgstr "" +"Diese Funktion soll die Speicherbelegung von der Speicherinitialisierung " +"trennen. Sie sollte einen Zeiger auf einen Speicherblock zurückgeben, der " +"für die Instanz lang genug und passend ausgerichtet und mit Nullen " +"initialisiert ist, bei dem aber :c:member:`~PyObject.ob_refcnt` auf ``1`` " +"und :c:member:`~PyObject.ob_type` auf das Typargument gesetzt ist. " +"Ist :c:member:`~PyTypeObject.tp_itemsize` des Typs ungleich null, sollte das " +"Feld :c:member:`~PyVarObject.ob_size` des Objekts mit *nitems* initialisiert " +"werden, und die Länge des belegten Speicherblocks sollte ``tp_basicsize + " +"nitems*tp_itemsize`` sein, aufgerundet auf ein Vielfaches von " +"``sizeof(void*)``. Andernfalls wird *nitems* nicht verwendet, und die Länge " +"des Blocks sollte :c:member:`~PyTypeObject.tp_basicsize` sein." + +#: ../../c-api/typeobj.rst:3165 +msgid "" +"This function should not do any other instance initialization, not even to " +"allocate additional memory; that should be done " +"by :c:member:`~PyTypeObject.tp_new`." +msgstr "" +"Diese Funktion sollte keine weitere Initialisierung der Instanz vornehmen, " +"auch keinen zusätzlichen Speicher belegen. Das " +"sollte :c:member:`~PyTypeObject.tp_new` erledigen." + +#: ../../c-api/typeobj.rst:3172 +msgid "See :c:member:`~PyTypeObject.tp_free`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_free`." + +#: ../../c-api/typeobj.rst:3176 +msgid "See :c:member:`~PyTypeObject.tp_new`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_new`." + +#: ../../c-api/typeobj.rst:3180 +msgid "See :c:member:`~PyTypeObject.tp_init`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_init`." + +#: ../../c-api/typeobj.rst:3184 +msgid "See :c:member:`~PyTypeObject.tp_repr`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_repr`." + +#: ../../c-api/typeobj.rst:3188 ../../c-api/typeobj.rst:3197 +msgid "Return the value of the named attribute for the object." +msgstr "Gibt den Wert des benannten Attributs des Objekts zurück." + +#: ../../c-api/typeobj.rst:3192 ../../c-api/typeobj.rst:3203 +msgid "" +"Set the value of the named attribute for the object. The value argument is " +"set to ``NULL`` to delete the attribute." +msgstr "" +"Setzt den Wert des benannten Attributs des Objekts. Das Argument für den " +"Wert wird auf ``NULL`` gesetzt, um das Attribut zu löschen." + +#: ../../c-api/typeobj.rst:3199 +msgid "See :c:member:`~PyTypeObject.tp_getattro`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_getattro`." + +#: ../../c-api/typeobj.rst:3206 +msgid "See :c:member:`~PyTypeObject.tp_setattro`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_setattro`." + +#: ../../c-api/typeobj.rst:3210 +msgid "See :c:member:`~PyTypeObject.tp_descr_get`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_descr_get`." + +#: ../../c-api/typeobj.rst:3214 +msgid "See :c:member:`~PyTypeObject.tp_descr_set`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_descr_set`." + +#: ../../c-api/typeobj.rst:3218 +msgid "See :c:member:`~PyTypeObject.tp_hash`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_hash`." + +#: ../../c-api/typeobj.rst:3222 +msgid "See :c:member:`~PyTypeObject.tp_richcompare`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_richcompare`." + +#: ../../c-api/typeobj.rst:3226 +msgid "See :c:member:`~PyTypeObject.tp_iter`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_iter`." + +#: ../../c-api/typeobj.rst:3230 +msgid "See :c:member:`~PyTypeObject.tp_iternext`." +msgstr "Siehe :c:member:`~PyTypeObject.tp_iternext`." + +#: ../../c-api/typeobj.rst:3244 +msgid "See :c:member:`~PyAsyncMethods.am_send`." +msgstr "Siehe :c:member:`~PyAsyncMethods.am_send`." + +#: ../../c-api/typeobj.rst:3260 +msgid "Examples" +msgstr "Beispiele" + +#: ../../c-api/typeobj.rst:3262 +msgid "" +"The following are simple examples of Python type definitions. They include " +"common usage you may encounter. Some demonstrate tricky corner cases. For " +"more examples, practical info, and a tutorial, see :ref:`defining-new-types` " +"and :ref:`new-types-topics`." +msgstr "" +"Hier einige einfache Beispiele für Python-Typdefinitionen. Sie enthalten " +"gängige Verwendungen, auf die du stoßen wirst. Manche zeigen knifflige " +"Sonderfälle. Weitere Beispiele, praktische Hinweise und eine Einführung " +"stehen unter :ref:`defining-new-types` und :ref:`new-types-topics`." + +#: ../../c-api/typeobj.rst:3267 +msgid "A basic :ref:`static type `::" +msgstr "Ein einfacher :ref:`statischer Typ `::" + +#: ../../c-api/typeobj.rst:3269 +msgid "" +"typedef struct {\n" +" PyObject_HEAD\n" +" const char *data;\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject),\n" +" .tp_doc = PyDoc_STR(\"My objects\"),\n" +" .tp_new = myobj_new,\n" +" .tp_dealloc = (destructor)myobj_dealloc,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +"};" +msgstr "" +"typedef struct {\n" +" PyObject_HEAD\n" +" const char *data;\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject),\n" +" .tp_doc = PyDoc_STR(\"My objects\"),\n" +" .tp_new = myobj_new,\n" +" .tp_dealloc = (destructor)myobj_dealloc,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +"};" + +#: ../../c-api/typeobj.rst:3284 +msgid "" +"You may also find older code (especially in the CPython code base) with a " +"more verbose initializer::" +msgstr "" +"Du wirst möglicherweise auch älteren Code finden (besonders in der CPython-" +"Codebasis), der einen ausführlicheren Initialisierer verwendet::" + +#: ../../c-api/typeobj.rst:3287 +msgid "" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" \"mymod.MyObject\", /* tp_name */\n" +" sizeof(MyObject), /* tp_basicsize */\n" +" 0, /* tp_itemsize */\n" +" (destructor)myobj_dealloc, /* tp_dealloc */\n" +" 0, /* tp_vectorcall_offset */\n" +" 0, /* tp_getattr */\n" +" 0, /* tp_setattr */\n" +" 0, /* tp_as_async */\n" +" (reprfunc)myobj_repr, /* tp_repr */\n" +" 0, /* tp_as_number */\n" +" 0, /* tp_as_sequence */\n" +" 0, /* tp_as_mapping */\n" +" 0, /* tp_hash */\n" +" 0, /* tp_call */\n" +" 0, /* tp_str */\n" +" 0, /* tp_getattro */\n" +" 0, /* tp_setattro */\n" +" 0, /* tp_as_buffer */\n" +" 0, /* tp_flags */\n" +" PyDoc_STR(\"My objects\"), /* tp_doc */\n" +" 0, /* tp_traverse */\n" +" 0, /* tp_clear */\n" +" 0, /* tp_richcompare */\n" +" 0, /* tp_weaklistoffset */\n" +" 0, /* tp_iter */\n" +" 0, /* tp_iternext */\n" +" 0, /* tp_methods */\n" +" 0, /* tp_members */\n" +" 0, /* tp_getset */\n" +" 0, /* tp_base */\n" +" 0, /* tp_dict */\n" +" 0, /* tp_descr_get */\n" +" 0, /* tp_descr_set */\n" +" 0, /* tp_dictoffset */\n" +" 0, /* tp_init */\n" +" 0, /* tp_alloc */\n" +" myobj_new, /* tp_new */\n" +"};" +msgstr "" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" \"mymod.MyObject\", /* tp_name */\n" +" sizeof(MyObject), /* tp_basicsize */\n" +" 0, /* tp_itemsize */\n" +" (destructor)myobj_dealloc, /* tp_dealloc */\n" +" 0, /* tp_vectorcall_offset */\n" +" 0, /* tp_getattr */\n" +" 0, /* tp_setattr */\n" +" 0, /* tp_as_async */\n" +" (reprfunc)myobj_repr, /* tp_repr */\n" +" 0, /* tp_as_number */\n" +" 0, /* tp_as_sequence */\n" +" 0, /* tp_as_mapping */\n" +" 0, /* tp_hash */\n" +" 0, /* tp_call */\n" +" 0, /* tp_str */\n" +" 0, /* tp_getattro */\n" +" 0, /* tp_setattro */\n" +" 0, /* tp_as_buffer */\n" +" 0, /* tp_flags */\n" +" PyDoc_STR(\"My objects\"), /* tp_doc */\n" +" 0, /* tp_traverse */\n" +" 0, /* tp_clear */\n" +" 0, /* tp_richcompare */\n" +" 0, /* tp_weaklistoffset */\n" +" 0, /* tp_iter */\n" +" 0, /* tp_iternext */\n" +" 0, /* tp_methods */\n" +" 0, /* tp_members */\n" +" 0, /* tp_getset */\n" +" 0, /* tp_base */\n" +" 0, /* tp_dict */\n" +" 0, /* tp_descr_get */\n" +" 0, /* tp_descr_set */\n" +" 0, /* tp_dictoffset */\n" +" 0, /* tp_init */\n" +" 0, /* tp_alloc */\n" +" myobj_new, /* tp_new */\n" +"};" + +#: ../../c-api/typeobj.rst:3328 +msgid "A type that supports weakrefs, instance dicts, and hashing::" +msgstr "" +"Ein Typ, der schwache Referenzen, Instanz-Dictionaries und Hashing " +"unterstützt::" + +#: ../../c-api/typeobj.rst:3330 +msgid "" +"typedef struct {\n" +" PyObject_HEAD\n" +" const char *data;\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject),\n" +" .tp_doc = PyDoc_STR(\"My objects\"),\n" +" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |\n" +" Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_MANAGED_DICT |\n" +" Py_TPFLAGS_MANAGED_WEAKREF,\n" +" .tp_new = myobj_new,\n" +" .tp_traverse = (traverseproc)myobj_traverse,\n" +" .tp_clear = (inquiry)myobj_clear,\n" +" .tp_alloc = PyType_GenericNew,\n" +" .tp_dealloc = (destructor)myobj_dealloc,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +" .tp_hash = (hashfunc)myobj_hash,\n" +" .tp_richcompare = PyBaseObject_Type.tp_richcompare,\n" +"};" +msgstr "" +"typedef struct {\n" +" PyObject_HEAD\n" +" const char *data;\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject),\n" +" .tp_doc = PyDoc_STR(\"My objects\"),\n" +" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |\n" +" Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_MANAGED_DICT |\n" +" Py_TPFLAGS_MANAGED_WEAKREF,\n" +" .tp_new = myobj_new,\n" +" .tp_traverse = (traverseproc)myobj_traverse,\n" +" .tp_clear = (inquiry)myobj_clear,\n" +" .tp_alloc = PyType_GenericNew,\n" +" .tp_dealloc = (destructor)myobj_dealloc,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +" .tp_hash = (hashfunc)myobj_hash,\n" +" .tp_richcompare = PyBaseObject_Type.tp_richcompare,\n" +"};" + +#: ../../c-api/typeobj.rst:3353 +msgid "" +"A str subclass that cannot be subclassed and cannot be called to create " +"instances (e.g. uses a separate factory func) " +"using :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag::" +msgstr "" +"Eine str-Unterklasse, von der sich keine Unterklassen bilden lassen und die " +"sich nicht aufrufen lässt, um Instanzen zu erzeugen (die also zum Beispiel " +"eine eigene Fabrikfunktion verwendet), mithilfe des " +"Flags :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION`::" + +#: ../../c-api/typeobj.rst:3357 +msgid "" +"typedef struct {\n" +" PyUnicodeObject raw;\n" +" char *extra;\n" +"} MyStr;\n" +"\n" +"static PyTypeObject MyStr_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyStr\",\n" +" .tp_basicsize = sizeof(MyStr),\n" +" .tp_base = NULL, // set to &PyUnicode_Type in module init\n" +" .tp_doc = PyDoc_STR(\"my custom str\"),\n" +" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +"};" +msgstr "" +"typedef struct {\n" +" PyUnicodeObject raw;\n" +" char *extra;\n" +"} MyStr;\n" +"\n" +"static PyTypeObject MyStr_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyStr\",\n" +" .tp_basicsize = sizeof(MyStr),\n" +" .tp_base = NULL, // set to &PyUnicode_Type in module init\n" +" .tp_doc = PyDoc_STR(\"my custom str\"),\n" +" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,\n" +" .tp_repr = (reprfunc)myobj_repr,\n" +"};" + +#: ../../c-api/typeobj.rst:3372 +msgid "" +"The simplest :ref:`static type ` with fixed-length instances::" +msgstr "" +"Der einfachste :ref:`statische Typ ` mit Instanzen fester " +"Länge::" + +#: ../../c-api/typeobj.rst:3374 +msgid "" +"typedef struct {\n" +" PyObject_HEAD\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +"};" +msgstr "" +"typedef struct {\n" +" PyObject_HEAD\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +"};" + +#: ../../c-api/typeobj.rst:3383 +msgid "" +"The simplest :ref:`static type ` with variable-length " +"instances::" +msgstr "" +"Der einfachste :ref:`statische Typ ` mit Instanzen " +"veränderlicher Länge::" + +#: ../../c-api/typeobj.rst:3385 +msgid "" +"typedef struct {\n" +" PyObject_VAR_HEAD\n" +" const char *data[1];\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject) - sizeof(char *),\n" +" .tp_itemsize = sizeof(char *),\n" +"};" +msgstr "" +"typedef struct {\n" +" PyObject_VAR_HEAD\n" +" const char *data[1];\n" +"} MyObject;\n" +"\n" +"static PyTypeObject MyObject_Type = {\n" +" PyVarObject_HEAD_INIT(NULL, 0)\n" +" .tp_name = \"mymod.MyObject\",\n" +" .tp_basicsize = sizeof(MyObject) - sizeof(char *),\n" +" .tp_itemsize = sizeof(char *),\n" +"};" + +#: ../../c-api/typeobj.rst:928 ../../c-api/typeobj.rst:995 +msgid "built-in function" +msgstr "eingebaute Funktion" + +#: ../../c-api/typeobj.rst:928 +msgid "repr" +msgstr "repr" + +#: ../../c-api/typeobj.rst:995 +msgid "hash" +msgstr "hash" From 00eb329d38167e24e28eff7ab000013204aac9b2 Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 14:32:12 +0100 Subject: [PATCH 7/9] _tools/pre-push-check.sh improvements (cleans cache before build the html's) --- _tools/pre_push_check.sh | 55 +++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/_tools/pre_push_check.sh b/_tools/pre_push_check.sh index bc96f0a6..18e7b26c 100644 --- a/_tools/pre_push_check.sh +++ b/_tools/pre_push_check.sh @@ -87,15 +87,43 @@ if $RUN_QUICK; then # Die CI formatiert nach jedem Push automatisch mit powrap und # committet das Ergebnis. Wer lokal nicht formatiert, bekommt beim # naechsten Rebase Konflikte in genau diesen Zeilen. Deshalb hier. - vorher=$(git -C "$REPO_ROOT" diff --name-only -- '*.po' | wc -l | tr -d ' ') - powrap -m 2>/dev/null - nachher=$(git -C "$REPO_ROOT" diff --name-only -- '*.po' | wc -l | tr -d ' ') - if [[ "$vorher" != "$nachher" ]]; then - echo "powrap hat weitere Dateien umbrochen -- bitte mit committen." - else - echo "OK -- Umbruch war bereits sauber." - fi - pass=$((pass + 1)) + # + # '--check' schreibt nichts, sondern liefert nur den Status: + # 0 = nichts zu tun, 1 = wuerde umbrechen, + # 2 = Datei(en) nicht formatierbar, 127 = msgcat fehlt. + # Der frueher benutzte Vergleich der Anzahl geaenderter Dateien war + # blind: eine bereits geaenderte Datei bleibt in der Liste, egal ob + # powrap sie anfasst -- der Check meldete dann immer "sauber". + powrap --check -q -m -C "$REPO_ROOT" >/dev/null 2>&1 + powrap_status=$? + case $powrap_status in + 0) + echo "OK -- Umbruch ist sauber." + pass=$((pass + 1)) + ;; + 1) + echo "Umbruch nicht sauber -- powrap formatiert jetzt ..." + powrap -q -m -C "$REPO_ROOT" + echo "Diese Dateien bitte mit committen:" + git -C "$REPO_ROOT" diff --name-only -- '*.po' \ + | sed 's/^/ /' + pass=$((pass + 1)) + ;; + 2) + echo "FEHLER: powrap konnte Dateien nicht formatieren." + powrap -d -q -m -C "$REPO_ROOT" 2>&1 | sed 's/^/ /' + fail=$((fail + 1)) + ;; + 127) + echo "msgcat nicht gefunden -- gehoert zu gettext" + echo "(brew install gettext). Schritt uebersprungen." + skip=$((skip + 1)) + ;; + *) + echo "powrap endete mit unerwartetem Code $powrap_status." + fail=$((fail + 1)) + ;; + esac fi log_section "1b/5 msgfmt --check (Syntax)" @@ -214,6 +242,15 @@ if $RUN_FULL; then fi fi + # Immer frisch bauen, so wie die CI. 'make html' baut sonst + # inkrementell und haelt in seiner Umgebungsdatei unter Doc/build/ + # alte Werte fest -- zum Beispiel die Argumentnamen von + # audit-event-Direktiven, die upstream umbenannt wurden. Das sieht dann + # lokal wie ein Uebersetzungsfehler aus und ist keiner. + echo "Raeume Sphinx-Cache auf (make clean) ..." + (cd "$CPYTHON_SRC/Doc" && make clean) \ + || echo "Hinweis: 'make clean' fehlgeschlagen -- Build ist inkrementell." + LOCALE_DIR="$CPYTHON_SRC/Doc/locales/de/LC_MESSAGES" echo "Verknuepfe aktuellen Uebersetzungsstand ($BRANCH) nach $LOCALE_DIR ..." rm -rf "$LOCALE_DIR" From 22c19e549626ddfca56fffe69f45045f224b53a9 Mon Sep 17 00:00:00 2001 From: sba72 <142266608+sba72@users.noreply.github.com> Date: Sun, 1 Nov 2026 13:35:47 +0000 Subject: [PATCH 8/9] Auto-format PO files to 80 chars [skip ci] --- builtins/exceptions.po | 5 +- builtins/functions.po | 23 ++++---- builtins/stdtypes.po | 122 +++++++++++++++++++-------------------- builtins/threadsafety.po | 8 +-- glossary.po | 9 ++- howto/functional.po | 6 +- library/time.po | 58 +++++++++---------- library/tkinter.po | 41 ++++++------- library/turtle.po | 4 +- reference/datamodel.po | 4 +- using/cmdline.po | 9 ++- using/ios.po | 11 ++-- using/windows.po | 13 ++--- whatsnew/3.12.po | 6 +- whatsnew/3.13.po | 8 +-- whatsnew/3.14.po | 8 +-- 16 files changed, 161 insertions(+), 174 deletions(-) diff --git a/builtins/exceptions.po b/builtins/exceptions.po index d3e49ead..98bd10e5 100644 --- a/builtins/exceptions.po +++ b/builtins/exceptions.po @@ -667,8 +667,9 @@ msgid "" "strerror_r`; under Windows, :c:func:`!FormatMessage` is used." msgstr "" "Die entsprechende Fehlermeldung, wie sie vom Betriebssystem bereitgestellt " -"wird. Unter POSIX wird sie über die C-Funktionen :c:func:`!strerror` oder " -":c:func:`!strerror_r` ermittelt, unter Windows über :c:func:`!FormatMessage`." +"wird. Unter POSIX wird sie über die C-Funktionen :c:func:`!strerror` " +"oder :c:func:`!strerror_r` ermittelt, unter Windows über :c:func:`!" +"FormatMessage`." #: ../../builtins/exceptions.rst:404 msgid "" diff --git a/builtins/functions.po b/builtins/functions.po index 6e297beb..17dafaf6 100644 --- a/builtins/functions.po +++ b/builtins/functions.po @@ -888,10 +888,9 @@ msgstr "" "``'single'``, wenn es aus einer einzelnen interaktiven Anweisung besteht (im " "letzteren Fall werden Ausdrucksanweisungen, die einen anderen Wert als " "``None`` ergeben, ausgegeben). Es kann außerdem ``'func_type'`` sein, wenn " -"*source* aus einer Typsignatur einer Funktion besteht, zum Beispiel " -"``(int) -> str``. Weitere Informationen stehen unter :func:`ast.parse`. " -"Dieser Modus erfordert, dass :data:`ast.PyCF_ONLY_AST` in *flags* übergeben " -"wird." +"*source* aus einer Typsignatur einer Funktion besteht, zum Beispiel ``(int) " +"-> str``. Weitere Informationen stehen unter :func:`ast.parse`. Dieser Modus " +"erfordert, dass :data:`ast.PyCF_ONLY_AST` in *flags* übergeben wird." #: ../../builtins/functions.rst:322 msgid "" @@ -1047,8 +1046,8 @@ msgid "" ":exc:`SyntaxError` is raised instead of :exc:`ValueError` when null bytes " "are encountered in *source*." msgstr "" -"Bei Null-Bytes in *source* wird jetzt ein :exc:`SyntaxError` statt eines " -":exc:`ValueError` ausgelöst." +"Bei Null-Bytes in *source* wird jetzt ein :exc:`SyntaxError` statt " +"eines :exc:`ValueError` ausgelöst." #: ../../builtins/functions.rst:401 msgid "Added the *module* parameter." @@ -1626,10 +1625,10 @@ msgid "" "the length of the code object's :attr:`~codeobject.co_freevars` attribute." msgstr "" "Das Argument *closure* gibt eine Closure an – ein Tupel von Cell-Variablen. " -"Es ist nur dann gültig, wenn *source* ein Code-Objekt ist, das " -":term:`freie (Closure-)Variablen ` enthält. Die Länge des " -"Tupels muss exakt der Länge des Attributs :attr:`~codeobject.co_freevars` " -"des Code-Objekts entsprechen." +"Es ist nur dann gültig, wenn *source* ein Code-Objekt ist, das :term:`freie " +"(Closure-)Variablen ` enthält. Die Länge des Tupels muss " +"exakt der Länge des Attributs :attr:`~codeobject.co_freevars` des Code-" +"Objekts entsprechen." #: ../../builtins/functions.rst:747 msgid "" @@ -4704,8 +4703,8 @@ msgstr "" "*level* gibt an, ob absolute oder relative Importe verwendet werden sollen. " "``0`` (der Standard) bedeutet, dass nur absolute Importe durchgeführt " "werden. Bei relativen Importen bezeichnet ``1`` das aktuelle Paket, ``2`` " -"dessen übergeordnetes Paket und so weiter (Einzelheiten stehen in " -":pep:`328`)." +"dessen übergeordnetes Paket und so weiter (Einzelheiten stehen " +"in :pep:`328`)." #: ../../builtins/functions.rst:2370 msgid "" diff --git a/builtins/stdtypes.po b/builtins/stdtypes.po index c6a44dd0..3b12f440 100644 --- a/builtins/stdtypes.po +++ b/builtins/stdtypes.po @@ -1841,10 +1841,10 @@ msgid "" "and :term:`generator iterators ` -- provide a convenient " "way to implement the iterator protocol." msgstr "" -"Die :term:`Generatoren ` von Python -- genauer gesagt " -":term:`Generatorfunktionen ` und " -":term:`Generator-Iteratoren ` -- bieten einen bequemen " -"Weg, das Iterator-Protokoll umzusetzen." +"Die :term:`Generatoren ` von Python -- genauer " +"gesagt :term:`Generatorfunktionen ` und :term:`Generator-" +"Iteratoren ` -- bieten einen bequemen Weg, das Iterator-" +"Protokoll umzusetzen." #: ../../builtins/stdtypes.rst:975 msgid "" @@ -1876,9 +1876,9 @@ msgid "" "calling a generator function returns a :ref:`generator iterator `::" msgstr "" -"Generatorfunktionen verhalten sich wie gewöhnliche " -":ref:`selbst definierte Funktionen ` (sie haben zum " -"Beispiel dieselben Attribute), nur dass der Aufruf einer Generatorfunktion " +"Generatorfunktionen verhalten sich wie gewöhnliche :ref:`selbst definierte " +"Funktionen ` (sie haben zum Beispiel dieselben " +"Attribute), nur dass der Aufruf einer Generatorfunktion " "einen :ref:`Generator-Iterator ` zurückgibt::" #: ../../builtins/stdtypes.rst:990 @@ -1895,8 +1895,8 @@ msgid "" "function, producing each :keyword:`yield`\\ed value in turn::" msgstr "" "Über einen Generator-Iterator zu iterieren führt den Code der zugrunde " -"liegenden Generatorfunktion aus und liefert nacheinander jeden mit " -":keyword:`yield` übergebenen Wert::" +"liegenden Generatorfunktion aus und liefert nacheinander jeden " +"mit :keyword:`yield` übergebenen Wert::" #: ../../builtins/stdtypes.rst:996 msgid "" @@ -1925,9 +1925,9 @@ msgid "" "One common use for generator functions is implementing " "the :meth:`~object.__iter__` method of custom iterable objects. For example::" msgstr "" -"Generatorfunktionen werden häufig dafür verwendet, die Methode " -":meth:`~object.__iter__` eigener iterierbarer Objekte umzusetzen. Zum " -"Beispiel::" +"Generatorfunktionen werden häufig dafür verwendet, die " +"Methode :meth:`~object.__iter__` eigener iterierbarer Objekte umzusetzen. " +"Zum Beispiel::" #: ../../builtins/stdtypes.rst:1010 msgid "" @@ -1957,9 +1957,9 @@ msgid "" "iterators>`. Iterating them drives execution of the underlying generator " "function." msgstr "" -"Generator-Iteratoren setzen das :ref:`Iterator-Protokoll " -"` um. Über sie zu iterieren treibt die Ausführung der " -"zugrunde liegenden Generatorfunktion voran." +"Generator-Iteratoren setzen das :ref:`Iterator-Protokoll ` um. Über sie zu iterieren treibt die Ausführung der zugrunde " +"liegenden Generatorfunktion voran." #: ../../builtins/stdtypes.rst:1033 msgid "" @@ -1977,14 +1977,14 @@ msgstr "" "Startet die Ausführung einer Generatorfunktion oder setzt sie an " "dem :ref:`yield-Ausdruck ` fort, an dem die Funktion gerade " "angehalten ist. Wird eine Generatorfunktion über eine " -"Methode :meth:`~generator.__next__` fortgesetzt, ergibt der aktuelle " -"yield-Ausdruck immer :const:`None`. Die Ausführung läuft dann bis zum " -"nächsten yield-Ausdruck weiter, wo der Generator erneut angehalten wird, " -"und der Wert des Ausdrucks nach dem Schlüsselwort :keyword:`yield` wird an " -"den Aufrufer von :meth:`~generator.__next__` zurückgegeben. Endet der " -"Generator, ohne einen weiteren Wert zu liefern, löst " -":meth:`~generator.__next__` eine :exc:`StopIteration`-Ausnahme aus und " -"zeigt damit an, dass die Iteration abgeschlossen ist." +"Methode :meth:`~generator.__next__` fortgesetzt, ergibt der aktuelle yield-" +"Ausdruck immer :const:`None`. Die Ausführung läuft dann bis zum nächsten " +"yield-Ausdruck weiter, wo der Generator erneut angehalten wird, und der Wert " +"des Ausdrucks nach dem Schlüsselwort :keyword:`yield` wird an den Aufrufer " +"von :meth:`~generator.__next__` zurückgegeben. Endet der Generator, ohne " +"einen weiteren Wert zu liefern, löst :meth:`~generator.__next__` " +"eine :exc:`StopIteration`-Ausnahme aus und zeigt damit an, dass die " +"Iteration abgeschlossen ist." #: ../../builtins/stdtypes.rst:1045 msgid "" @@ -1992,8 +1992,8 @@ msgid "" "loop, or by the built-in :func:`next` function." msgstr "" "Diese Methode wird normalerweise stillschweigend aufgerufen, zum Beispiel " -"von einer :keyword:`for`-Schleife oder von der integrierten Funktion " -":func:`next`." +"von einer :keyword:`for`-Schleife oder von der integrierten " +"Funktion :func:`next`." #: ../../builtins/stdtypes.rst:1048 msgid "" @@ -2036,8 +2036,8 @@ msgstr "" msgid "" "Raises an exception at the point where the generator is currently suspended." msgstr "" -"Löst eine Ausnahme an der Stelle aus, an der der Generator gerade " -"angehalten ist." +"Löst eine Ausnahme an der Stelle aus, an der der Generator gerade angehalten " +"ist." #: ../../builtins/stdtypes.rst:1070 msgid "" @@ -2050,8 +2050,8 @@ msgstr "" "Ansonsten verhält sich diese Methode wie :meth:`~generator.__next__`: Sie " "setzt die zugrunde liegende Funktion fort und gibt entweder den nächsten " "gelieferten Wert zurück oder löst :exc:`StopIteration` aus. Fängt die " -"Generatorfunktion die übergebene Ausnahme nicht ab oder löst sie eine " -"andere Ausnahme aus, wird diese an den Aufrufer weitergegeben." +"Generatorfunktion die übergebene Ausnahme nicht ab oder löst sie eine andere " +"Ausnahme aus, wird diese an den Aufrufer weitergegeben." #: ../../builtins/stdtypes.rst:1076 msgid "" @@ -2061,9 +2061,9 @@ msgid "" "to :meth:`throw`'s caller." msgstr "" "Wird :meth:`throw` aufgerufen, um den Generator zu starten, endet der " -"Generator sofort (nachfolgende Aufrufe von :meth:`~generator.__next__` " -"lösen also :exc:`StopIteration` aus), und die geworfene Ausnahme wird an " -"den Aufrufer von :meth:`throw` weitergegeben." +"Generator sofort (nachfolgende Aufrufe von :meth:`~generator.__next__` lösen " +"also :exc:`StopIteration` aus), und die geworfene Ausnahme wird an den " +"Aufrufer von :meth:`throw` weitergegeben." #: ../../builtins/stdtypes.rst:1081 ../../builtins/stdtypes.rst:1202 msgid "" @@ -2128,7 +2128,6 @@ msgstr "" "weitergegeben. Gibt ein Generator beim Schließen einen Wert zurück, wird " "dieser Wert von :meth:`close` zurückgegeben." - #: ../../builtins/stdtypes.rst:1113 msgid "" "When a generator iterator is garbage collected before it has " @@ -2167,9 +2166,9 @@ msgid "" "which are used to control the execution of an asynchronous generator " "function." msgstr "" -"Dieser Unterabschnitt beschreibt die Methoden eines asynchronen " -"Generator-Iterators, mit denen die Ausführung einer asynchronen " -"Generatorfunktion gesteuert wird." +"Dieser Unterabschnitt beschreibt die Methoden eines asynchronen Generator-" +"Iterators, mit denen die Ausführung einer asynchronen Generatorfunktion " +"gesteuert wird." #: ../../builtins/stdtypes.rst:1144 msgid "" @@ -2189,24 +2188,22 @@ msgstr "" "Ausführung die asynchrone Generatorfunktion startet oder sie an " "dem :ref:`yield-Ausdruck ` fortsetzt, an dem die Funktion gerade " "angehalten ist. Wird eine asynchrone Generatorfunktion über eine " -"Methode :meth:`~agen.__anext__` fortgesetzt, ergibt der aktuelle " -"yield-Ausdruck im zurückgegebenen abwartbaren Objekt immer :const:`None`, " -"und dieses läuft bei seiner Ausführung bis zum nächsten yield-Ausdruck " -"weiter. Der Wert des Ausdrucks nach dem Schlüsselwort :keyword:`yield` ist " -"der Wert der :exc:`StopIteration`-Ausnahme, die die abschließende Coroutine " -"auslöst. Endet der asynchrone Generator, ohne einen weiteren Wert zu " -"liefern, löst das abwartbare Objekt stattdessen " -"eine :exc:`StopAsyncIteration`-Ausnahme aus und zeigt damit an, dass die " -"asynchrone Iteration abgeschlossen ist." +"Methode :meth:`~agen.__anext__` fortgesetzt, ergibt der aktuelle yield-" +"Ausdruck im zurückgegebenen abwartbaren Objekt immer :const:`None`, und " +"dieses läuft bei seiner Ausführung bis zum nächsten yield-Ausdruck weiter. " +"Der Wert des Ausdrucks nach dem Schlüsselwort :keyword:`yield` ist der Wert " +"der :exc:`StopIteration`-Ausnahme, die die abschließende Coroutine auslöst. " +"Endet der asynchrone Generator, ohne einen weiteren Wert zu liefern, löst " +"das abwartbare Objekt stattdessen eine :exc:`StopAsyncIteration`-Ausnahme " +"aus und zeigt damit an, dass die asynchrone Iteration abgeschlossen ist." #: ../../builtins/stdtypes.rst:1157 msgid "" "This method is normally called implicitly by an :keyword:`async for` loop, " "or by the built-in :func:`anext` function." msgstr "" -"Diese Methode wird normalerweise stillschweigend von " -"einer :keyword:`async for`-Schleife oder von der integrierten " -"Funktion :func:`anext` aufgerufen." +"Diese Methode wird normalerweise stillschweigend von einer :keyword:`async " +"for`-Schleife oder von der integrierten Funktion :func:`anext` aufgerufen." #: ../../builtins/stdtypes.rst:1161 msgid "" @@ -2247,9 +2244,9 @@ msgid "" "called with :const:`None` as the argument, because there is no yield " "expression that could receive the value." msgstr "" -"Wird :meth:`asend` aufgerufen, um den asynchronen Generator zu starten, " -"muss es mit :const:`None` als Argument aufgerufen werden, weil es keinen " -"yield-Ausdruck gibt, der den Wert aufnehmen könnte." +"Wird :meth:`asend` aufgerufen, um den asynchronen Generator zu starten, muss " +"es mit :const:`None` als Argument aufgerufen werden, weil es keinen yield-" +"Ausdruck gibt, der den Wert aufnehmen könnte." #: ../../builtins/stdtypes.rst:1186 msgid "" @@ -2274,9 +2271,9 @@ msgstr "" "zurückgegebene abwartbare Objekt, setzt es die zugrunde liegende Funktion " "fort (mit einer ausgelösten Ausnahme) und gibt entweder den nächsten " "gelieferten Wert als Wert der ausgelösten :exc:`StopIteration` zurück oder " -"löst :exc:`StopAsyncIteration` aus. Fängt die zugrunde liegende Funktion " -"die übergebene Ausnahme nicht ab oder löst sie eine andere Ausnahme aus, " -"wird diese bei der Ausführung des abwartbaren Objekts an dessen Aufrufer " +"löst :exc:`StopAsyncIteration` aus. Fängt die zugrunde liegende Funktion die " +"übergebene Ausnahme nicht ab oder löst sie eine andere Ausnahme aus, wird " +"diese bei der Ausführung des abwartbaren Objekts an dessen Aufrufer " "weitergegeben." #: ../../builtins/stdtypes.rst:1197 @@ -2286,8 +2283,8 @@ msgid "" "from :meth:`~agen.__anext__` will raise :exc:`StopAsyncIteration` when run) " "and the thrown exception is propagated to the awaitable's caller." msgstr "" -"Wird :meth:`~agen.athrow` aufgerufen, um den Generator zu starten, endet " -"der Generator, sobald das abwartbare Objekt läuft (nachfolgende Ergebnisse " +"Wird :meth:`~agen.athrow` aufgerufen, um den Generator zu starten, endet der " +"Generator, sobald das abwartbare Objekt läuft (nachfolgende Ergebnisse " "von :meth:`~agen.__anext__` lösen bei ihrer Ausführung " "also :exc:`StopAsyncIteration` aus), und die geworfene Ausnahme wird an den " "Aufrufer des abwartbaren Objekts weitergegeben." @@ -2308,10 +2305,10 @@ msgid "" "the underlying asynchronous generator function at the point where it is " "currently suspended (equivalent to calling ``athrow(GeneratorExit)``)." msgstr "" -"Gibt ein abwartbares Objekt zurück, das bei seiner Ausführung an der " -"Stelle, an der die zugrunde liegende asynchrone Generatorfunktion gerade " -"angehalten ist, ein :exc:`GeneratorExit` hineinwirft (gleichbedeutend mit " -"dem Aufruf ``athrow(GeneratorExit)``)." +"Gibt ein abwartbares Objekt zurück, das bei seiner Ausführung an der Stelle, " +"an der die zugrunde liegende asynchrone Generatorfunktion gerade angehalten " +"ist, ein :exc:`GeneratorExit` hineinwirft (gleichbedeutend mit dem Aufruf " +"``athrow(GeneratorExit)``)." #: ../../builtins/stdtypes.rst:1225 msgid "" @@ -10432,9 +10429,8 @@ msgid "" "An equality comparison between two distinct ``dict.values()`` views will " "always return ``False``, even for views of the same dictionary::" msgstr "" -"Ein Gleichheitsvergleich zwischen zwei verschiedenen " -"``dict.values()``-Views gibt immer ``False`` zurück, auch bei Views " -"desselben Dictionarys::" +"Ein Gleichheitsvergleich zwischen zwei verschiedenen ``dict.values()``-Views " +"gibt immer ``False`` zurück, auch bei Views desselben Dictionarys::" #: ../../builtins/stdtypes.rst:5861 msgid "" diff --git a/builtins/threadsafety.po b/builtins/threadsafety.po index 5081155d..6ffab9fb 100644 --- a/builtins/threadsafety.po +++ b/builtins/threadsafety.po @@ -822,8 +822,8 @@ msgid "" "other operand is a :class:`set`, :class:`frozenset`, or :class:`dict`." msgstr "" ":meth:`set.update` und :meth:`set.union` sperren beide Objekte nur dann, " -"wenn der andere Operand ein :class:`set`, :class:`frozenset` oder " -":class:`dict` ist." +"wenn der andere Operand ein :class:`set`, :class:`frozenset` " +"oder :class:`dict` ist." #: ../../builtins/threadsafety.rst:412 msgid "" @@ -850,8 +850,8 @@ msgid "" ":meth:`set.difference_update` and :meth:`set.intersection_update` try to " "lock all objects one-by-one." msgstr "" -":meth:`set.difference_update` und :meth:`set.intersection_update` " -"versuchen, alle Objekte nacheinander zu sperren." +":meth:`set.difference_update` und :meth:`set.intersection_update` versuchen, " +"alle Objekte nacheinander zu sperren." #: ../../builtins/threadsafety.rst:422 msgid "" diff --git a/glossary.po b/glossary.po index 8e3231c1..5e384f1f 100644 --- a/glossary.po +++ b/glossary.po @@ -1885,11 +1885,10 @@ msgid "" "threaded applications and makes it easier to use multi-core CPUs " "efficiently. For more details, see :pep:`703`." msgstr "" -"Ab Python 3.13 kann der GIL mithilfe der Build-Konfiguration " -":option:`--disable-gil` deaktiviert werden. Diese Funktion ermöglicht eine " -"verbesserte Leistung für Multithread-Anwendungen und erleichtert die " -"effiziente Nutzung von Multi-Core-CPUs. Weitere Details findest du " -"unter :pep:`703`." +"Ab Python 3.13 kann der GIL mithilfe der Build-Konfiguration :option:`--" +"disable-gil` deaktiviert werden. Diese Funktion ermöglicht eine verbesserte " +"Leistung für Multithread-Anwendungen und erleichtert die effiziente Nutzung " +"von Multi-Core-CPUs. Weitere Details findest du unter :pep:`703`." #: ../../glossary.rst:734 msgid "" diff --git a/howto/functional.po b/howto/functional.po index e9dbb999..2d62fffe 100644 --- a/howto/functional.po +++ b/howto/functional.po @@ -1310,9 +1310,9 @@ msgid "" "sequence ``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], " "iterB[2]), ...``." msgstr "" -":func:`map(f, iterA, iterB, ...) ` gibt einen Iterator über die " -"Sequenz ``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], " -"iterB[2]), ...`` zurück." +":func:`map(f, iterA, iterB, ...) ` gibt einen Iterator über die Sequenz " +"``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], iterB[2]), ...`` " +"zurück." #: ../../howto/functional.rst:641 msgid "You can of course achieve the same effect with a list comprehension." diff --git a/library/time.po b/library/time.po index 0ff8557e..5b6ebbda 100644 --- a/library/time.po +++ b/library/time.po @@ -249,11 +249,11 @@ msgid "" "space padded if the day is a single digit, for example: ``'Wed Jun 9 " "04:26:40 1993'``." msgstr "" -"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so " -"darstellt, wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in " -"eine Zeichenkette der folgenden Form um: ``'Sun Jun 20 23:21:05 1993'``. " -"Das Tagesfeld ist zwei Zeichen breit und wird bei einstelligem Tag mit " -"einem Leerzeichen aufgefüllt, zum Beispiel: ``'Wed Jun 9 04:26:40 1993'``." +"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so darstellt, " +"wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in eine " +"Zeichenkette der folgenden Form um: ``'Sun Jun 20 23:21:05 1993'``. Das " +"Tagesfeld ist zwei Zeichen breit und wird bei einstelligem Tag mit einem " +"Leerzeichen aufgefüllt, zum Beispiel: ``'Wed Jun 9 04:26:40 1993'``." #: ../../library/time.rst:133 msgid "" @@ -261,9 +261,9 @@ msgid "" "by :func:`localtime` is used. Locale information is not used " "by :func:`asctime`." msgstr "" -"Ist *time_tuple* nicht angegeben, wird die aktuelle Zeit verwendet, wie " -":func:`localtime` sie zurückgibt. :func:`asctime` verwendet keine Angaben " -"aus dem Gebietsschema." +"Ist *time_tuple* nicht angegeben, wird die aktuelle Zeit verwendet, " +"wie :func:`localtime` sie zurückgibt. :func:`asctime` verwendet keine " +"Angaben aus dem Gebietsschema." #: ../../library/time.rst:139 msgid "" @@ -475,13 +475,12 @@ msgid "" "a description of the :class:`struct_time` object. " "See :func:`calendar.timegm` for the inverse of this function." msgstr "" -"Wandelt eine in Sekunden seit der Epoche (epoch_) angegebene Zeit in ein " -":class:`struct_time` in UTC um, bei dem das dst-Flag immer null ist. Ist " +"Wandelt eine in Sekunden seit der Epoche (epoch_) angegebene Zeit in " +"ein :class:`struct_time` in UTC um, bei dem das dst-Flag immer null ist. Ist " "*seconds* nicht angegeben oder :const:`None`, wird die aktuelle Zeit " -"verwendet, wie :func:`.time` sie zurückgibt. Bruchteile einer Sekunde " -"werden nicht beachtet. Eine Beschreibung des :class:`struct_time`-Objekts " -"steht weiter oben. Die Umkehrung dieser Funktion ist " -":func:`calendar.timegm`." +"verwendet, wie :func:`.time` sie zurückgibt. Bruchteile einer Sekunde werden " +"nicht beachtet. Eine Beschreibung des :class:`struct_time`-Objekts steht " +"weiter oben. Die Umkehrung dieser Funktion ist :func:`calendar.timegm`." #: ../../library/time.rst:274 msgid "" @@ -490,9 +489,9 @@ msgid "" "dst flag is set to ``1`` when DST applies to the given time." msgstr "" "Wie :func:`gmtime`, rechnet aber in die Ortszeit um. Ist *seconds* nicht " -"angegeben oder :const:`None`, wird die aktuelle Zeit verwendet, wie " -":func:`.time` sie zurückgibt. Das dst-Flag wird auf ``1`` gesetzt, wenn für " -"die angegebene Zeit die Sommerzeit gilt." +"angegeben oder :const:`None`, wird die aktuelle Zeit verwendet, " +"wie :func:`.time` sie zurückgibt. Das dst-Flag wird auf ``1`` gesetzt, wenn " +"für die angegebene Zeit die Sommerzeit gilt." #: ../../library/time.rst:279 msgid "" @@ -710,10 +709,9 @@ msgstr "" "Zeitscheibe an jeden anderen lauffähigen Thread ab. Gibt es keine anderen " "lauffähigen Threads, kehrt die Funktion sofort zurück, und der Thread läuft " "weiter. Unter Windows 10 und neuer verwendet die Implementierung einen " -"`hochauflösenden Zeitgeber " -"`_, der eine Auflösung von 100 Nanosekunden bietet. Ist " -"*seconds* null, wird ``Sleep(0)`` verwendet." +"`hochauflösenden Zeitgeber `_, der eine Auflösung von 100 " +"Nanosekunden bietet. Ist *seconds* null, wird ``Sleep(0)`` verwendet." #: ../../library/time.rst:421 msgid "Unix implementation" @@ -754,8 +752,8 @@ msgid "" "Raises an :ref:`auditing event ` ``time.sleep`` with argument " "``seconds``." msgstr "" -"Löst ein :ref:`Auditing-Ereignis ` ``time.sleep`` mit dem " -"Argument ``seconds`` aus." +"Löst ein :ref:`Auditing-Ereignis ` ``time.sleep`` mit dem Argument " +"``seconds`` aus." #: ../../library/time.rst:435 msgid "" @@ -789,13 +787,13 @@ msgid "" "string. :exc:`ValueError` is raised if any field in *time_tuple* is outside " "of the allowed range." msgstr "" -"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so " -"darstellt, wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in " -"eine Zeichenkette um, wie das Argument *format* sie angibt. Ist " -"*time_tuple* nicht angegeben, wird die aktuelle Zeit verwendet, wie " -":func:`localtime` sie zurückgibt. *format* muss eine Zeichenkette sein. " -"Liegt ein Feld in *time_tuple* außerhalb des zulässigen Bereichs, wird " -":exc:`ValueError` ausgelöst." +"Wandelt ein Tupel oder ein :class:`struct_time`, das eine Zeit so darstellt, " +"wie :func:`gmtime` oder :func:`localtime` sie zurückgeben, in eine " +"Zeichenkette um, wie das Argument *format* sie angibt. Ist *time_tuple* " +"nicht angegeben, wird die aktuelle Zeit verwendet, wie :func:`localtime` sie " +"zurückgibt. *format* muss eine Zeichenkette sein. Liegt ein Feld in " +"*time_tuple* außerhalb des zulässigen Bereichs, wird :exc:`ValueError` " +"ausgelöst." #: ../../library/time.rst:462 msgid "" diff --git a/library/tkinter.po b/library/tkinter.po index b418ee7a..1a09f495 100644 --- a/library/tkinter.po +++ b/library/tkinter.po @@ -1760,10 +1760,9 @@ msgstr "" "``'questhead'``, ``'question'``, ``'warning'``. Unter macOS sind außerdem " "diese Bitmaps verfügbar: ``'application'``, ``'accessory'``, ``'folder'``, " "``'pfolder'``, ``'trash'``, ``'floppy'``, ``'ramdisk'``, ``'cdrom'``, " -"``'preferences'``, ``'querydoc'``, ``'stop'``, ``'note'`` und " -"``'caution'``. Um einen X-Bitmap-Dateinamen anzugeben, nenne den " -"vollständigen Pfad zur Datei mit vorangestelltem ``@``, etwa " -"``\"@/usr/contrib/bitmap/gumby.bit\"``." +"``'preferences'``, ``'querydoc'``, ``'stop'``, ``'note'`` und ``'caution'``. " +"Um einen X-Bitmap-Dateinamen anzugeben, nenne den vollständigen Pfad zur " +"Datei mit vorangestelltem ``@``, etwa ``\"@/usr/contrib/bitmap/gumby.bit\"``." #: ../../library/tkinter.rst:793 msgid "boolean" @@ -1901,13 +1900,13 @@ msgid "" "a :class:`tkinter.font.Font` instance, or, on X11, an XLFD font name can be " "used as well." msgstr "" -"Tk verwendet eine Schriftbeschreibung wie ``{courier 10 bold}``. In " -":mod:`!tkinter` übergibt man sie am natürlichsten als Tupel ``(family, " -"size, *styles)`` (oder als die gleichwertige Zeichenkette ``\"Courier 10 " +"Tk verwendet eine Schriftbeschreibung wie ``{courier 10 bold}``. In :mod:`!" +"tkinter` übergibt man sie am natürlichsten als Tupel ``(family, size, " +"*styles)`` (oder als die gleichwertige Zeichenkette ``\"Courier 10 " "bold\"``). Schriftgrößen mit positiven Zahlen werden in Punkt gemessen, " -"Größen mit negativen Zahlen in Pixeln. Auch der Name einer benannten " -"Schrift wie ``\"TkDefaultFont\"``, eine :class:`tkinter.font.Font`-Instanz " -"oder, unter X11, ein XLFD-Schriftname lässt sich verwenden." +"Größen mit negativen Zahlen in Pixeln. Auch der Name einer benannten Schrift " +"wie ``\"TkDefaultFont\"``, eine :class:`tkinter.font.Font`-Instanz oder, " +"unter X11, ein XLFD-Schriftname lässt sich verwenden." #: ../../library/tkinter.rst:870 msgid "justify" @@ -1955,11 +1954,10 @@ msgid "" "legal regions." msgstr "" "Wird für die Option *scrollregion* von :class:`Canvas` verwendet. Das ist " -"eine Zeichenkette mit vier durch Leerzeichen getrennten Elementen, von " -"denen jedes ein zulässiger Abstand ist (siehe oben), oder eine Sequenz aus " -"vier solchen Elementen. Zum Beispiel sind ``\"2 3 4 5\"``, ``(2, 3, 4, " -"5)``, ``\"3i 2i 4.5i 2i\"`` und ``\"3c 2c 4c 10.43c\"`` alles zulässige " -"Regionen." +"eine Zeichenkette mit vier durch Leerzeichen getrennten Elementen, von denen " +"jedes ein zulässiger Abstand ist (siehe oben), oder eine Sequenz aus vier " +"solchen Elementen. Zum Beispiel sind ``\"2 3 4 5\"``, ``(2, 3, 4, 5)``, " +"``\"3i 2i 4.5i 2i\"`` und ``\"3c 2c 4c 10.43c\"`` alles zulässige Regionen." #: ../../library/tkinter.rst:893 msgid "relief" @@ -5834,8 +5832,8 @@ msgstr "" "Verschiebt den Ausschnitt um *number* Einheiten nach links oder rechts. " "*what* ist entweder ``'units'`` oder ``'pages'``. Ein negatives *number* " "blättert nach links, ein positives nach rechts. Das :class:`Text`-Widget " -"nimmt außerdem ``'pixels'`` an, dann darf *number* ein Bildschirmabstand " -"wie ``'1i'`` sein." +"nimmt außerdem ``'pixels'`` an, dann darf *number* ein Bildschirmabstand wie " +"``'1i'`` sein." #: ../../library/tkinter.rst:3336 msgid "" @@ -5882,11 +5880,10 @@ msgid "" "The :class:`Text` widget accepts also ``'pixels'``, and then *number* can be " "a screen distance, such as ``'1i'``." msgstr "" -"Verschiebt den Ausschnitt um *number* Einheiten nach oben oder unten. " -"*what* ist entweder ``'units'`` oder ``'pages'``. Ein negatives *number* " -"blättert nach oben, ein positives nach unten. Das :class:`Text`-Widget " -"nimmt außerdem ``'pixels'`` an, dann darf *number* ein Bildschirmabstand " -"wie ``'1i'`` sein." +"Verschiebt den Ausschnitt um *number* Einheiten nach oben oder unten. *what* " +"ist entweder ``'units'`` oder ``'pages'``. Ein negatives *number* blättert " +"nach oben, ein positives nach unten. Das :class:`Text`-Widget nimmt außerdem " +"``'pixels'`` an, dann darf *number* ein Bildschirmabstand wie ``'1i'`` sein." #: ../../library/tkinter.rst:3368 msgid "" diff --git a/library/turtle.po b/library/turtle.po index 51e77a2b..bf5fe082 100644 --- a/library/turtle.po +++ b/library/turtle.po @@ -1092,8 +1092,8 @@ msgstr "" "Gib den Winkel der Linie von der Position der Turtle zu (x,y) zurück. Ist " "*y* ``None``, muss *x* ein Koordinatenpaar sein, ein :class:`Vec2D` – zum " "Beispiel wie von :func:`pos` zurückgegeben – oder eine andere Turtle. Der " -"Winkel wird von der Startausrichtung der Turtle aus gemessen, die vom " -"Turtle-Modus abhängt, siehe :func:`mode`." +"Winkel wird von der Startausrichtung der Turtle aus gemessen, die vom Turtle-" +"Modus abhängt, siehe :func:`mode`." #: ../../library/turtle.rst:681 msgid "" diff --git a/reference/datamodel.po b/reference/datamodel.po index 66ed0a34..17216784 100644 --- a/reference/datamodel.po +++ b/reference/datamodel.po @@ -2490,8 +2490,8 @@ msgstr "" "Das genaue Format ist ein Implementierungsdetail und kann sich zwischen " "Python-Versionen ändern. Für den unterstützten Zugriff auf Zeilen- und " "Positionsangaben verwende :meth:`~codeobject.co_lines` " -"und :meth:`~codeobject.co_positions`. Um eine veränderte Kopie eines " -"Code-Objekts zu erzeugen, verwende :meth:`~codeobject.replace`." +"und :meth:`~codeobject.co_positions`. Um eine veränderte Kopie eines Code-" +"Objekts zu erzeugen, verwende :meth:`~codeobject.replace`." #: ../../reference/datamodel.rst:1572 msgid "The required stack size of the code object" diff --git a/using/cmdline.po b/using/cmdline.po index 5f0575bd..06d9546b 100644 --- a/using/cmdline.po +++ b/using/cmdline.po @@ -1216,11 +1216,10 @@ msgid "" "code for execution in another process and the functionality to receive code " "for execution in the current process." msgstr "" -"``-X disable-remote-debug`` schaltet die Unterstützung für das " -"Fern-Debugging ab, wie sie in :pep:`768` beschrieben ist. Das betrifft " -"sowohl die Möglichkeit, Code zur Ausführung in einem anderen Prozess " -"einzuplanen, als auch die Möglichkeit, Code zur Ausführung im aktuellen " -"Prozess zu empfangen." +"``-X disable-remote-debug`` schaltet die Unterstützung für das Fern-" +"Debugging ab, wie sie in :pep:`768` beschrieben ist. Das betrifft sowohl die " +"Möglichkeit, Code zur Ausführung in einem anderen Prozess einzuplanen, als " +"auch die Möglichkeit, Code zur Ausführung im aktuellen Prozess zu empfangen." #: ../../using/cmdline.rst:660 msgid "" diff --git a/using/ios.po b/using/ios.po index 5b302b39..95953357 100644 --- a/using/ios.po +++ b/using/ios.po @@ -84,12 +84,11 @@ msgid "" "with the Python code itself." msgstr "" "Wenn du zum ersten Mal damit experimentieren möchtest, eine iOS-App in " -"Python zu schreiben, bieten dir Projekte wie `BeeWare " -"`__, `Kivy `__ und `Flet " -"`__ eine deutlich zugänglichere Nutzererfahrung. Diese " -"Projekte übernehmen die Komplexität, die mit dem Zum-Laufen-Bringen eines " -"iOS-Projekts verbunden ist, sodass du dich nur um den eigentlichen " -"Python-Code kümmern musst." +"Python zu schreiben, bieten dir Projekte wie `BeeWare `__, `Kivy `__ und `Flet `__ eine deutlich zugänglichere Nutzererfahrung. Diese Projekte übernehmen " +"die Komplexität, die mit dem Zum-Laufen-Bringen eines iOS-Projekts verbunden " +"ist, sodass du dich nur um den eigentlichen Python-Code kümmern musst." #: ../../using/ios.rst:35 msgid "Python at runtime on iOS" diff --git a/using/windows.po b/using/windows.po index 66e3f453..ccc6fc4b 100644 --- a/using/windows.po +++ b/using/windows.po @@ -677,13 +677,12 @@ msgid "" "unaffected." msgstr "" "Mit ``--update`` werden vorhandene Installationen ersetzt, sofern die neue " -"Version neuer ist. Andernfalls bleiben sie unverändert. Werden zu " -"``--update`` keine Tags angegeben, werden alle vom Python Install Manager " -"verwalteten Installationen aktualisiert, für die neuere Versionen " -"vorliegen. Aktualisierungen entfernen alle Änderungen an der Installation, " -"auch global installierte Pakete, lassen aber die Verzeichnisse " -"``site-packages`` und ``Scripts`` unverändert. Virtuelle Umgebungen sind " -"ebenfalls nicht betroffen." +"Version neuer ist. Andernfalls bleiben sie unverändert. Werden zu ``--" +"update`` keine Tags angegeben, werden alle vom Python Install Manager " +"verwalteten Installationen aktualisiert, für die neuere Versionen vorliegen. " +"Aktualisierungen entfernen alle Änderungen an der Installation, auch global " +"installierte Pakete, lassen aber die Verzeichnisse ``site-packages`` und " +"``Scripts`` unverändert. Virtuelle Umgebungen sind ebenfalls nicht betroffen." #: ../../using/windows.rst:310 msgid "" diff --git a/whatsnew/3.12.po b/whatsnew/3.12.po index 3e4676b5..43eee1cb 100644 --- a/whatsnew/3.12.po +++ b/whatsnew/3.12.po @@ -6045,9 +6045,9 @@ msgid "" "to correctly track reference counts and allocated blocks" msgstr "" "``sys.getunicodeinternedsize`` gibt die Gesamtzahl der Unicode-Objekte " -"zurück, die interniert wurden. Das wird jetzt gebraucht, damit " -":file:`refleak.py` Referenzzähler und angeforderte Speicherblöcke richtig " -"verfolgen kann" +"zurück, die interniert wurden. Das wird jetzt gebraucht, " +"damit :file:`refleak.py` Referenzzähler und angeforderte Speicherblöcke " +"richtig verfolgen kann" #: ../../whatsnew/3.12.rst:2008 msgid "(Contributed by Eddie Elizondo in :gh:`84436`.)" diff --git a/whatsnew/3.13.po b/whatsnew/3.13.po index 5fc05c6e..649a039e 100644 --- a/whatsnew/3.13.po +++ b/whatsnew/3.13.po @@ -7446,8 +7446,8 @@ msgid "" "`." msgstr "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: ersetze " -"``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` durch " -":c:func:`PyUnicodeWriter_WriteASCII(writer, str, size) " +"``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` " +"durch :c:func:`PyUnicodeWriter_WriteASCII(writer, str, size) " "`." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:36 @@ -7461,8 +7461,8 @@ msgstr "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: ersetze " "``_PyUnicodeWriter_WriteLatin1String(&writer, str, size)``, indem du die " "Zeichenkette mit :c:func:`PyUnicode_DecodeLatin1` dekodierst, das Ergebnis " -"mit :c:func:`PyUnicodeWriter_WriteStr` schreibst und es mit " -":c:func:`Py_DECREF` freigibst." +"mit :c:func:`PyUnicodeWriter_WriteStr` schreibst und es " +"mit :c:func:`Py_DECREF` freigibst." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:41 msgid ":c:func:`!_PyUnicodeWriter_Prepare`: (no replacement)." diff --git a/whatsnew/3.14.po b/whatsnew/3.14.po index a0c49bcc..2684428c 100644 --- a/whatsnew/3.14.po +++ b/whatsnew/3.14.po @@ -8309,8 +8309,8 @@ msgid "" "`." msgstr "" ":c:func:`!_PyUnicodeWriter_WriteASCIIString`: ersetze " -"``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` durch " -":c:func:`PyUnicodeWriter_WriteASCII(writer, str, size) " +"``_PyUnicodeWriter_WriteASCIIString(&writer, str, size)`` " +"durch :c:func:`PyUnicodeWriter_WriteASCII(writer, str, size) " "`." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:36 @@ -8324,8 +8324,8 @@ msgstr "" ":c:func:`!_PyUnicodeWriter_WriteLatin1String`: ersetze " "``_PyUnicodeWriter_WriteLatin1String(&writer, str, size)``, indem du die " "Zeichenkette mit :c:func:`PyUnicode_DecodeLatin1` dekodierst, das Ergebnis " -"mit :c:func:`PyUnicodeWriter_WriteStr` schreibst und es mit " -":c:func:`Py_DECREF` freigibst." +"mit :c:func:`PyUnicodeWriter_WriteStr` schreibst und es " +"mit :c:func:`Py_DECREF` freigibst." #: ../../deprecations/c-api-pending-removal-in-3.18.rst:41 msgid ":c:func:`!_PyUnicodeWriter_Prepare`: (no replacement)." From fd64d117b4b9f6cabcd11542c691fdf2ede02798 Mon Sep 17 00:00:00 2001 From: sba72 Date: Sun, 1 Nov 2026 15:56:22 +0100 Subject: [PATCH 9/9] delete double file --- c-api/typeobj-1.po | 6257 -------------------------------------------- 1 file changed, 6257 deletions(-) delete mode 100644 c-api/typeobj-1.po diff --git a/c-api/typeobj-1.po b/c-api/typeobj-1.po deleted file mode 100644 index a196f21d..00000000 --- a/c-api/typeobj-1.po +++ /dev/null @@ -1,6257 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2001 Python Software Foundation -# This file is distributed under the same license as the Python package. -# FIRST AUTHOR , YEAR. -# -# Translators: -# python-doc bot, 2025 -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: Python 3.15\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-11-01 00:10+0000\n" -"PO-Revision-Date: 2026-11-01 13:00+0100\n" -"Last-Translator: python-doc bot, 2025\n" -"Language-Team: German (https://app.transifex.com/python-doc/teams/5390/de/)\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../../c-api/typeobj.rst:6 -msgid "Type Object Structures" -msgstr "Typobjekt-Strukturen" - -#: ../../c-api/typeobj.rst:8 -msgid "" -"Perhaps one of the most important structures of the Python object system is " -"the structure that defines a new type: the :c:type:`PyTypeObject` " -"structure. Type objects can be handled using any of the ``PyObject_*`` or " -"``PyType_*`` functions, but do not offer much that's interesting to most " -"Python applications. These objects are fundamental to how objects behave, so " -"they are very important to the interpreter itself and to any extension " -"module that implements new types." -msgstr "" -"Eine der wichtigsten Strukturen des Python-Objektsystems ist vielleicht die " -"Struktur, die einen neuen Typ festlegt: die Struktur :c:type:`PyTypeObject`. " -"Typobjekte lassen sich mit allen ``PyObject_*``- oder ``PyType_*``-" -"Funktionen behandeln, bieten den meisten Python-Anwendungen aber wenig " -"Interessantes. Diese Objekte sind grundlegend dafür, wie Objekte sich " -"verhalten, und deshalb für den Interpreter selbst und für jedes " -"Erweiterungsmodul, das neue Typen umsetzt, sehr wichtig." - -#: ../../c-api/typeobj.rst:16 -msgid "" -"Type objects are fairly large compared to most of the standard types. The " -"reason for the size is that each type object stores a large number of " -"values, mostly C function pointers, each of which implements a small part of " -"the type's functionality. The fields of the type object are examined in " -"detail in this section. The fields will be described in the order in which " -"they occur in the structure." -msgstr "" -"Typobjekte sind im Vergleich zu den meisten Standardtypen ziemlich groß. Der " -"Grund für die Größe ist, dass jedes Typobjekt eine große Anzahl von Werten " -"speichert, überwiegend C-Funktionszeiger, von denen jeder einen kleinen Teil " -"der Funktionalität des Typs umsetzt. Die Felder des Typobjekts werden in " -"diesem Abschnitt im Einzelnen untersucht. Sie werden in der Reihenfolge " -"beschrieben, in der sie in der Struktur vorkommen." - -#: ../../c-api/typeobj.rst:23 -msgid "" -"In addition to the following quick reference, the :ref:`typedef-examples` " -"section provides at-a-glance insight into the meaning and use " -"of :c:type:`PyTypeObject`." -msgstr "" -"Zusätzlich zur folgenden Kurzübersicht bietet der Abschnitt :ref:`typedef-" -"examples` einen schnellen Einblick in Bedeutung und Verwendung " -"von :c:type:`PyTypeObject`." - -#: ../../c-api/typeobj.rst:29 -msgid "Quick Reference" -msgstr "Kurzübersicht" - -#: ../../c-api/typeobj.rst:34 -msgid "\"tp slots\"" -msgstr "„tp-Slots“" - -#: ../../c-api/typeobj.rst:40 -msgid "PyTypeObject Slot [#slots]_" -msgstr "PyTypeObject-Slot [#slots]_" - -#: ../../c-api/typeobj.rst:40 ../../c-api/typeobj.rst:201 -msgid ":ref:`Type `" -msgstr ":ref:`Typ `" - -#: ../../c-api/typeobj.rst:40 -msgid "special methods/attrs" -msgstr "Spezialmethoden/-attribute" - -#: ../../c-api/typeobj.rst:40 -msgid "Info [#cols]_" -msgstr "Info [#cols]_" - -#: ../../c-api/typeobj.rst:42 -msgid "O" -msgstr "O" - -#: ../../c-api/typeobj.rst:42 -msgid "T" -msgstr "T" - -#: ../../c-api/typeobj.rst:42 -msgid "D" -msgstr "D" - -#: ../../c-api/typeobj.rst:42 -msgid "I" -msgstr "I" - -#: ../../c-api/typeobj.rst:44 -msgid " :c:member:`~PyTypeObject.tp_name`" -msgstr " :c:member:`~PyTypeObject.tp_name`" - -#: ../../c-api/typeobj.rst:44 ../../c-api/typeobj.rst:86 -#: ../../c-api/typeobj.rst:372 ../../c-api/typeobj.rst:377 -msgid "const char *" -msgstr "const char *" - -#: ../../c-api/typeobj.rst:44 -msgid "__name__" -msgstr "__name__" - -#: ../../c-api/typeobj.rst:44 ../../c-api/typeobj.rst:46 -#: ../../c-api/typeobj.rst:48 ../../c-api/typeobj.rst:50 -#: ../../c-api/typeobj.rst:52 ../../c-api/typeobj.rst:62 -#: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:72 -#: ../../c-api/typeobj.rst:74 ../../c-api/typeobj.rst:76 -#: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:84 -#: ../../c-api/typeobj.rst:86 ../../c-api/typeobj.rst:88 -#: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:92 -#: ../../c-api/typeobj.rst:99 ../../c-api/typeobj.rst:101 -#: ../../c-api/typeobj.rst:103 ../../c-api/typeobj.rst:105 -#: ../../c-api/typeobj.rst:107 ../../c-api/typeobj.rst:109 -#: ../../c-api/typeobj.rst:111 ../../c-api/typeobj.rst:115 -#: ../../c-api/typeobj.rst:117 ../../c-api/typeobj.rst:120 -#: ../../c-api/typeobj.rst:122 ../../c-api/typeobj.rst:124 -#: ../../c-api/typeobj.rst:126 ../../c-api/typeobj.rst:128 -#: ../../c-api/typeobj.rst:130 ../../c-api/typeobj.rst:146 -msgid "X" -msgstr "X" - -#: ../../c-api/typeobj.rst:46 -msgid ":c:member:`~PyTypeObject.tp_basicsize`" -msgstr ":c:member:`~PyTypeObject.tp_basicsize`" - -#: ../../c-api/typeobj.rst:46 ../../c-api/typeobj.rst:48 -#: ../../c-api/typeobj.rst:52 ../../c-api/typeobj.rst:99 -#: ../../c-api/typeobj.rst:120 ../../c-api/typeobj.rst:343 -#: ../../c-api/typeobj.rst:417 ../../c-api/typeobj.rst:448 -#: ../../c-api/typeobj.rst:453 -msgid ":c:type:`Py_ssize_t`" -msgstr ":c:type:`Py_ssize_t`" - -#: ../../c-api/typeobj.rst:48 -msgid ":c:member:`~PyTypeObject.tp_itemsize`" -msgstr ":c:member:`~PyTypeObject.tp_itemsize`" - -#: ../../c-api/typeobj.rst:50 -msgid ":c:member:`~PyTypeObject.tp_dealloc`" -msgstr ":c:member:`~PyTypeObject.tp_dealloc`" - -#: ../../c-api/typeobj.rst:50 ../../c-api/typeobj.rst:142 -#: ../../c-api/typeobj.rst:146 ../../c-api/typeobj.rst:347 -msgid ":c:type:`destructor`" -msgstr ":c:type:`destructor`" - -#: ../../c-api/typeobj.rst:52 -msgid ":c:member:`~PyTypeObject.tp_vectorcall_offset`" -msgstr ":c:member:`~PyTypeObject.tp_vectorcall_offset`" - -#: ../../c-api/typeobj.rst:54 -msgid "(:c:member:`~PyTypeObject.tp_getattr`)" -msgstr "(:c:member:`~PyTypeObject.tp_getattr`)" - -#: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:371 -msgid ":c:type:`getattrfunc`" -msgstr ":c:type:`getattrfunc`" - -#: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:76 -msgid "__getattribute__, __getattr__" -msgstr "__getattribute__, __getattr__" - -#: ../../c-api/typeobj.rst:54 ../../c-api/typeobj.rst:57 -#: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:76 -#: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:88 -#: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:92 -msgid "G" -msgstr "G" - -#: ../../c-api/typeobj.rst:57 -msgid "(:c:member:`~PyTypeObject.tp_setattr`)" -msgstr "(:c:member:`~PyTypeObject.tp_setattr`)" - -#: ../../c-api/typeobj.rst:57 ../../c-api/typeobj.rst:376 -msgid ":c:type:`setattrfunc`" -msgstr ":c:type:`setattrfunc`" - -#: ../../c-api/typeobj.rst:57 ../../c-api/typeobj.rst:79 -msgid "__setattr__, __delattr__" -msgstr "__setattr__, __delattr__" - -#: ../../c-api/typeobj.rst:60 -msgid ":c:member:`~PyTypeObject.tp_as_async`" -msgstr ":c:member:`~PyTypeObject.tp_as_async`" - -#: ../../c-api/typeobj.rst:60 -msgid ":c:type:`PyAsyncMethods` *" -msgstr ":c:type:`PyAsyncMethods` *" - -#: ../../c-api/typeobj.rst:60 ../../c-api/typeobj.rst:64 -#: ../../c-api/typeobj.rst:66 ../../c-api/typeobj.rst:68 -#: ../../c-api/typeobj.rst:82 -msgid ":ref:`sub-slots`" -msgstr ":ref:`sub-slots`" - -#: ../../c-api/typeobj.rst:60 ../../c-api/typeobj.rst:64 -#: ../../c-api/typeobj.rst:66 ../../c-api/typeobj.rst:68 -#: ../../c-api/typeobj.rst:82 -msgid "%" -msgstr "%" - -#: ../../c-api/typeobj.rst:62 -msgid ":c:member:`~PyTypeObject.tp_repr`" -msgstr ":c:member:`~PyTypeObject.tp_repr`" - -#: ../../c-api/typeobj.rst:62 ../../c-api/typeobj.rst:74 -#: ../../c-api/typeobj.rst:369 -msgid ":c:type:`reprfunc`" -msgstr ":c:type:`reprfunc`" - -#: ../../c-api/typeobj.rst:62 -msgid "__repr__" -msgstr "__repr__" - -#: ../../c-api/typeobj.rst:64 -msgid ":c:member:`~PyTypeObject.tp_as_number`" -msgstr ":c:member:`~PyTypeObject.tp_as_number`" - -#: ../../c-api/typeobj.rst:64 -msgid ":c:type:`PyNumberMethods` *" -msgstr ":c:type:`PyNumberMethods` *" - -#: ../../c-api/typeobj.rst:66 -msgid ":c:member:`~PyTypeObject.tp_as_sequence`" -msgstr ":c:member:`~PyTypeObject.tp_as_sequence`" - -#: ../../c-api/typeobj.rst:66 -msgid ":c:type:`PySequenceMethods` *" -msgstr ":c:type:`PySequenceMethods` *" - -#: ../../c-api/typeobj.rst:68 -msgid ":c:member:`~PyTypeObject.tp_as_mapping`" -msgstr ":c:member:`~PyTypeObject.tp_as_mapping`" - -#: ../../c-api/typeobj.rst:68 -msgid ":c:type:`PyMappingMethods` *" -msgstr ":c:type:`PyMappingMethods` *" - -#: ../../c-api/typeobj.rst:70 -msgid ":c:member:`~PyTypeObject.tp_hash`" -msgstr ":c:member:`~PyTypeObject.tp_hash`" - -#: ../../c-api/typeobj.rst:70 ../../c-api/typeobj.rst:405 -msgid ":c:type:`hashfunc`" -msgstr ":c:type:`hashfunc`" - -#: ../../c-api/typeobj.rst:70 -msgid "__hash__" -msgstr "__hash__" - -#: ../../c-api/typeobj.rst:72 -msgid ":c:member:`~PyTypeObject.tp_call`" -msgstr ":c:member:`~PyTypeObject.tp_call`" - -#: ../../c-api/typeobj.rst:72 ../../c-api/typeobj.rst:237 -#: ../../c-api/typeobj.rst:240 ../../c-api/typeobj.rst:441 -msgid ":c:type:`ternaryfunc`" -msgstr ":c:type:`ternaryfunc`" - -#: ../../c-api/typeobj.rst:72 -msgid "__call__" -msgstr "__call__" - -#: ../../c-api/typeobj.rst:74 -msgid ":c:member:`~PyTypeObject.tp_str`" -msgstr ":c:member:`~PyTypeObject.tp_str`" - -#: ../../c-api/typeobj.rst:74 -msgid "__str__" -msgstr "__str__" - -#: ../../c-api/typeobj.rst:76 -msgid ":c:member:`~PyTypeObject.tp_getattro`" -msgstr ":c:member:`~PyTypeObject.tp_getattro`" - -#: ../../c-api/typeobj.rst:76 ../../c-api/typeobj.rst:382 -msgid ":c:type:`getattrofunc`" -msgstr ":c:type:`getattrofunc`" - -#: ../../c-api/typeobj.rst:79 -msgid ":c:member:`~PyTypeObject.tp_setattro`" -msgstr ":c:member:`~PyTypeObject.tp_setattro`" - -#: ../../c-api/typeobj.rst:79 ../../c-api/typeobj.rst:387 -msgid ":c:type:`setattrofunc`" -msgstr ":c:type:`setattrofunc`" - -#: ../../c-api/typeobj.rst:82 -msgid ":c:member:`~PyTypeObject.tp_as_buffer`" -msgstr ":c:member:`~PyTypeObject.tp_as_buffer`" - -#: ../../c-api/typeobj.rst:82 -msgid ":c:type:`PyBufferProcs` *" -msgstr ":c:type:`PyBufferProcs` *" - -#: ../../c-api/typeobj.rst:84 -msgid ":c:member:`~PyTypeObject.tp_flags`" -msgstr ":c:member:`~PyTypeObject.tp_flags`" - -#: ../../c-api/typeobj.rst:84 -msgid "unsigned long" -msgstr "unsigned long" - -#: ../../c-api/typeobj.rst:84 ../../c-api/typeobj.rst:99 -#: ../../c-api/typeobj.rst:113 ../../c-api/typeobj.rst:120 -#: ../../c-api/typeobj.rst:124 ../../c-api/typeobj.rst:126 -#: ../../c-api/typeobj.rst:128 -msgid "?" -msgstr "?" - -#: ../../c-api/typeobj.rst:86 -msgid ":c:member:`~PyTypeObject.tp_doc`" -msgstr ":c:member:`~PyTypeObject.tp_doc`" - -#: ../../c-api/typeobj.rst:86 -msgid "__doc__" -msgstr "__doc__" - -#: ../../c-api/typeobj.rst:88 -msgid ":c:member:`~PyTypeObject.tp_traverse`" -msgstr ":c:member:`~PyTypeObject.tp_traverse`" - -#: ../../c-api/typeobj.rst:88 ../../c-api/typeobj.rst:351 -msgid ":c:type:`traverseproc`" -msgstr ":c:type:`traverseproc`" - -#: ../../c-api/typeobj.rst:90 -msgid ":c:member:`~PyTypeObject.tp_clear`" -msgstr ":c:member:`~PyTypeObject.tp_clear`" - -#: ../../c-api/typeobj.rst:90 ../../c-api/typeobj.rst:130 -#: ../../c-api/typeobj.rst:248 ../../c-api/typeobj.rst:430 -msgid ":c:type:`inquiry`" -msgstr ":c:type:`inquiry`" - -#: ../../c-api/typeobj.rst:92 -msgid ":c:member:`~PyTypeObject.tp_richcompare`" -msgstr ":c:member:`~PyTypeObject.tp_richcompare`" - -#: ../../c-api/typeobj.rst:92 ../../c-api/typeobj.rst:407 -msgid ":c:type:`richcmpfunc`" -msgstr ":c:type:`richcmpfunc`" - -#: ../../c-api/typeobj.rst:92 -msgid "__lt__, __le__, __eq__, __ne__, __gt__, __ge__" -msgstr "__lt__, __le__, __eq__, __ne__, __gt__, __ge__" - -#: ../../c-api/typeobj.rst:99 -msgid "(:c:member:`~PyTypeObject.tp_weaklistoffset`)" -msgstr "(:c:member:`~PyTypeObject.tp_weaklistoffset`)" - -#: ../../c-api/typeobj.rst:101 -msgid ":c:member:`~PyTypeObject.tp_iter`" -msgstr ":c:member:`~PyTypeObject.tp_iter`" - -#: ../../c-api/typeobj.rst:101 ../../c-api/typeobj.rst:413 -msgid ":c:type:`getiterfunc`" -msgstr ":c:type:`getiterfunc`" - -#: ../../c-api/typeobj.rst:101 -msgid "__iter__" -msgstr "__iter__" - -#: ../../c-api/typeobj.rst:103 -msgid ":c:member:`~PyTypeObject.tp_iternext`" -msgstr ":c:member:`~PyTypeObject.tp_iternext`" - -#: ../../c-api/typeobj.rst:103 ../../c-api/typeobj.rst:415 -msgid ":c:type:`iternextfunc`" -msgstr ":c:type:`iternextfunc`" - -#: ../../c-api/typeobj.rst:103 -msgid "__next__" -msgstr "__next__" - -#: ../../c-api/typeobj.rst:105 -msgid ":c:member:`~PyTypeObject.tp_methods`" -msgstr ":c:member:`~PyTypeObject.tp_methods`" - -#: ../../c-api/typeobj.rst:105 -msgid ":c:type:`PyMethodDef` []" -msgstr ":c:type:`PyMethodDef` []" - -#: ../../c-api/typeobj.rst:107 -msgid ":c:member:`~PyTypeObject.tp_members`" -msgstr ":c:member:`~PyTypeObject.tp_members`" - -#: ../../c-api/typeobj.rst:107 -msgid ":c:type:`PyMemberDef` []" -msgstr ":c:type:`PyMemberDef` []" - -#: ../../c-api/typeobj.rst:109 -msgid ":c:member:`~PyTypeObject.tp_getset`" -msgstr ":c:member:`~PyTypeObject.tp_getset`" - -#: ../../c-api/typeobj.rst:109 -msgid ":c:type:`PyGetSetDef` []" -msgstr ":c:type:`PyGetSetDef` []" - -#: ../../c-api/typeobj.rst:111 -msgid ":c:member:`~PyTypeObject.tp_base`" -msgstr ":c:member:`~PyTypeObject.tp_base`" - -#: ../../c-api/typeobj.rst:111 ../../c-api/typeobj.rst:342 -#: ../../c-api/typeobj.rst:357 -msgid ":c:type:`PyTypeObject` *" -msgstr ":c:type:`PyTypeObject` *" - -#: ../../c-api/typeobj.rst:111 -msgid "__base__" -msgstr "__base__" - -#: ../../c-api/typeobj.rst:113 -msgid ":c:member:`~PyTypeObject.tp_dict`" -msgstr ":c:member:`~PyTypeObject.tp_dict`" - -#: ../../c-api/typeobj.rst:113 ../../c-api/typeobj.rst:132 -#: ../../c-api/typeobj.rst:134 ../../c-api/typeobj.rst:136 -#: ../../c-api/typeobj.rst:140 ../../c-api/typeobj.rst:342 -#: ../../c-api/typeobj.rst:347 ../../c-api/typeobj.rst:351 -#: ../../c-api/typeobj.rst:357 ../../c-api/typeobj.rst:358 -#: ../../c-api/typeobj.rst:359 ../../c-api/typeobj.rst:363 -#: ../../c-api/typeobj.rst:364 ../../c-api/typeobj.rst:365 -#: ../../c-api/typeobj.rst:369 ../../c-api/typeobj.rst:371 -#: ../../c-api/typeobj.rst:376 ../../c-api/typeobj.rst:378 -#: ../../c-api/typeobj.rst:382 ../../c-api/typeobj.rst:383 -#: ../../c-api/typeobj.rst:387 ../../c-api/typeobj.rst:388 -#: ../../c-api/typeobj.rst:389 ../../c-api/typeobj.rst:393 -#: ../../c-api/typeobj.rst:394 ../../c-api/typeobj.rst:395 -#: ../../c-api/typeobj.rst:399 ../../c-api/typeobj.rst:400 -#: ../../c-api/typeobj.rst:401 ../../c-api/typeobj.rst:405 -#: ../../c-api/typeobj.rst:407 ../../c-api/typeobj.rst:408 -#: ../../c-api/typeobj.rst:413 ../../c-api/typeobj.rst:415 -#: ../../c-api/typeobj.rst:417 ../../c-api/typeobj.rst:419 -#: ../../c-api/typeobj.rst:425 ../../c-api/typeobj.rst:430 -#: ../../c-api/typeobj.rst:432 ../../c-api/typeobj.rst:436 -#: ../../c-api/typeobj.rst:437 ../../c-api/typeobj.rst:441 -#: ../../c-api/typeobj.rst:442 ../../c-api/typeobj.rst:443 -#: ../../c-api/typeobj.rst:447 ../../c-api/typeobj.rst:452 -#: ../../c-api/typeobj.rst:454 ../../c-api/typeobj.rst:458 -#: ../../c-api/typeobj.rst:459 ../../c-api/typeobj.rst:463 -#: ../../c-api/typeobj.rst:464 ../../c-api/typeobj.rst:465 -msgid ":c:type:`PyObject` *" -msgstr ":c:type:`PyObject` *" - -#: ../../c-api/typeobj.rst:113 -msgid "__dict__" -msgstr "__dict__" - -#: ../../c-api/typeobj.rst:115 -msgid ":c:member:`~PyTypeObject.tp_descr_get`" -msgstr ":c:member:`~PyTypeObject.tp_descr_get`" - -#: ../../c-api/typeobj.rst:115 ../../c-api/typeobj.rst:393 -msgid ":c:type:`descrgetfunc`" -msgstr ":c:type:`descrgetfunc`" - -#: ../../c-api/typeobj.rst:115 -msgid "__get__" -msgstr "__get__" - -#: ../../c-api/typeobj.rst:117 -msgid ":c:member:`~PyTypeObject.tp_descr_set`" -msgstr ":c:member:`~PyTypeObject.tp_descr_set`" - -#: ../../c-api/typeobj.rst:117 ../../c-api/typeobj.rst:399 -msgid ":c:type:`descrsetfunc`" -msgstr ":c:type:`descrsetfunc`" - -#: ../../c-api/typeobj.rst:117 -msgid "__set__, __delete__" -msgstr "__set__, __delete__" - -#: ../../c-api/typeobj.rst:120 -msgid "(:c:member:`~PyTypeObject.tp_dictoffset`)" -msgstr "(:c:member:`~PyTypeObject.tp_dictoffset`)" - -#: ../../c-api/typeobj.rst:122 -msgid ":c:member:`~PyTypeObject.tp_init`" -msgstr ":c:member:`~PyTypeObject.tp_init`" - -#: ../../c-api/typeobj.rst:122 ../../c-api/typeobj.rst:363 -msgid ":c:type:`initproc`" -msgstr ":c:type:`initproc`" - -#: ../../c-api/typeobj.rst:122 -msgid "__init__" -msgstr "__init__" - -#: ../../c-api/typeobj.rst:124 -msgid ":c:member:`~PyTypeObject.tp_alloc`" -msgstr ":c:member:`~PyTypeObject.tp_alloc`" - -#: ../../c-api/typeobj.rst:124 ../../c-api/typeobj.rst:342 -msgid ":c:type:`allocfunc`" -msgstr ":c:type:`allocfunc`" - -#: ../../c-api/typeobj.rst:126 -msgid ":c:member:`~PyTypeObject.tp_new`" -msgstr ":c:member:`~PyTypeObject.tp_new`" - -#: ../../c-api/typeobj.rst:126 ../../c-api/typeobj.rst:357 -msgid ":c:type:`newfunc`" -msgstr ":c:type:`newfunc`" - -#: ../../c-api/typeobj.rst:126 -msgid "__new__" -msgstr "__new__" - -#: ../../c-api/typeobj.rst:128 -msgid ":c:member:`~PyTypeObject.tp_free`" -msgstr ":c:member:`~PyTypeObject.tp_free`" - -#: ../../c-api/typeobj.rst:128 ../../c-api/typeobj.rst:349 -msgid ":c:type:`freefunc`" -msgstr ":c:type:`freefunc`" - -#: ../../c-api/typeobj.rst:130 -msgid ":c:member:`~PyTypeObject.tp_is_gc`" -msgstr ":c:member:`~PyTypeObject.tp_is_gc`" - -#: ../../c-api/typeobj.rst:132 -msgid "<:c:member:`~PyTypeObject.tp_bases`>" -msgstr "<:c:member:`~PyTypeObject.tp_bases`>" - -#: ../../c-api/typeobj.rst:132 -msgid "__bases__" -msgstr "__bases__" - -#: ../../c-api/typeobj.rst:132 ../../c-api/typeobj.rst:134 -msgid "~" -msgstr "~" - -#: ../../c-api/typeobj.rst:134 -msgid "<:c:member:`~PyTypeObject.tp_mro`>" -msgstr "<:c:member:`~PyTypeObject.tp_mro`>" - -#: ../../c-api/typeobj.rst:134 -msgid "__mro__" -msgstr "__mro__" - -#: ../../c-api/typeobj.rst:136 -msgid "[:c:member:`~PyTypeObject.tp_cache`]" -msgstr "[:c:member:`~PyTypeObject.tp_cache`]" - -#: ../../c-api/typeobj.rst:138 -msgid "[:c:member:`~PyTypeObject.tp_subclasses`]" -msgstr "[:c:member:`~PyTypeObject.tp_subclasses`]" - -#: ../../c-api/typeobj.rst:138 ../../c-api/typeobj.rst:279 -#: ../../c-api/typeobj.rst:349 ../../c-api/typeobj.rst:353 -msgid "void *" -msgstr "void *" - -#: ../../c-api/typeobj.rst:138 -msgid "__subclasses__" -msgstr "__subclasses__" - -#: ../../c-api/typeobj.rst:140 -msgid "[:c:member:`~PyTypeObject.tp_weaklist`]" -msgstr "[:c:member:`~PyTypeObject.tp_weaklist`]" - -#: ../../c-api/typeobj.rst:142 -msgid "(:c:member:`~PyTypeObject.tp_del`)" -msgstr "(:c:member:`~PyTypeObject.tp_del`)" - -#: ../../c-api/typeobj.rst:144 -msgid "[:c:member:`~PyTypeObject.tp_version_tag`]" -msgstr "[:c:member:`~PyTypeObject.tp_version_tag`]" - -#: ../../c-api/typeobj.rst:144 -msgid "unsigned int" -msgstr "unsigned int" - -#: ../../c-api/typeobj.rst:146 -msgid ":c:member:`~PyTypeObject.tp_finalize`" -msgstr ":c:member:`~PyTypeObject.tp_finalize`" - -#: ../../c-api/typeobj.rst:146 -msgid "__del__" -msgstr "__del__" - -#: ../../c-api/typeobj.rst:148 -msgid ":c:member:`~PyTypeObject.tp_vectorcall`" -msgstr ":c:member:`~PyTypeObject.tp_vectorcall`" - -#: ../../c-api/typeobj.rst:148 -msgid ":c:type:`vectorcallfunc`" -msgstr ":c:type:`vectorcallfunc`" - -#: ../../c-api/typeobj.rst:150 -msgid "[:c:member:`~PyTypeObject.tp_watched`]" -msgstr "[:c:member:`~PyTypeObject.tp_watched`]" - -#: ../../c-api/typeobj.rst:150 -msgid "unsigned char" -msgstr "unsigned char" - -#: ../../c-api/typeobj.rst:155 -msgid "" -"**()**: A slot name in parentheses indicates it is (effectively) deprecated." -msgstr "" -"**()**: Ein Slot-Name in Klammern bedeutet, dass er (praktisch) veraltet ist." - -#: ../../c-api/typeobj.rst:157 -msgid "" -"**<>**: Names in angle brackets should be initially set to ``NULL`` and " -"treated as read-only." -msgstr "" -"**<>**: Namen in spitzen Klammern sollten anfangs auf ``NULL`` gesetzt und " -"als nur lesbar behandelt werden." - -#: ../../c-api/typeobj.rst:160 -msgid "**[]**: Names in square brackets are for internal use only." -msgstr "**[]**: Namen in eckigen Klammern sind nur für den internen Gebrauch." - -#: ../../c-api/typeobj.rst:162 -msgid "" -"**** (as a prefix) means the field is required (must be non-``NULL``)." -msgstr "" -"**** (als Präfix) bedeutet, dass das Feld erforderlich ist (darf nicht " -"``NULL`` sein)." - -#: ../../c-api/typeobj.rst:164 -msgid "Columns:" -msgstr "Spalten:" - -#: ../../c-api/typeobj.rst:166 -msgid "**\"O\"**: set on :c:data:`PyBaseObject_Type`" -msgstr "**\"O\"**: an :c:data:`PyBaseObject_Type` gesetzt" - -#: ../../c-api/typeobj.rst:168 -msgid "**\"T\"**: set on :c:data:`PyType_Type`" -msgstr "**\"T\"**: an :c:data:`PyType_Type` gesetzt" - -#: ../../c-api/typeobj.rst:170 -msgid "**\"D\"**: default (if slot is set to ``NULL``)" -msgstr "**\"D\"**: Vorgabe (wenn der Slot auf ``NULL`` gesetzt ist)" - -#: ../../c-api/typeobj.rst:172 -msgid "" -"X - PyType_Ready sets this value if it is NULL\n" -"~ - PyType_Ready always sets this value (it should be NULL)\n" -"? - PyType_Ready may set this value depending on other slots\n" -"\n" -"Also see the inheritance column (\"I\")." -msgstr "" -"X - PyType_Ready setzt diesen Wert, wenn er NULL ist\n" -"~ - PyType_Ready setzt diesen Wert immer (er sollte NULL sein)\n" -"? - PyType_Ready setzt diesen Wert je nach anderen Slots\n" -"\n" -"Siehe auch die Vererbungsspalte (\"I\")." - -#: ../../c-api/typeobj.rst:180 -msgid "**\"I\"**: inheritance" -msgstr "**\"I\"**: Vererbung" - -#: ../../c-api/typeobj.rst:182 -msgid "" -"X - type slot is inherited via *PyType_Ready* if defined with a *NULL* " -"value\n" -"% - the slots of the sub-struct are inherited individually\n" -"G - inherited, but only in combination with other slots; see the slot's " -"description\n" -"? - it's complicated; see the slot's description" -msgstr "" -"X - Typ-Slot wird über *PyType_Ready* vererbt, wenn er mit einem *NULL*-Wert " -"festgelegt ist\n" -"% - die Slots der Unterstruktur werden einzeln vererbt\n" -"G - vererbt, aber nur in Verbindung mit anderen Slots -- siehe die " -"Beschreibung des Slots\n" -"? - es ist kompliziert -- siehe die Beschreibung des Slots" - -#: ../../c-api/typeobj.rst:189 -msgid "" -"Note that some slots are effectively inherited through the normal attribute " -"lookup chain." -msgstr "" -"Beachte, dass manche Slots praktisch über die normale Kette der " -"Attributsuche vererbt werden." - -#: ../../c-api/typeobj.rst:195 -msgid "sub-slots" -msgstr "Unter-Slots" - -#: ../../c-api/typeobj.rst:201 -msgid "Slot" -msgstr "Slot" - -#: ../../c-api/typeobj.rst:201 -msgid "special methods" -msgstr "Spezialmethoden" - -#: ../../c-api/typeobj.rst:204 -msgid ":c:member:`~PyAsyncMethods.am_await`" -msgstr ":c:member:`~PyAsyncMethods.am_await`" - -#: ../../c-api/typeobj.rst:204 ../../c-api/typeobj.rst:206 -#: ../../c-api/typeobj.rst:208 ../../c-api/typeobj.rst:242 -#: ../../c-api/typeobj.rst:244 ../../c-api/typeobj.rst:246 -#: ../../c-api/typeobj.rst:250 ../../c-api/typeobj.rst:277 -#: ../../c-api/typeobj.rst:281 ../../c-api/typeobj.rst:291 -#: ../../c-api/typeobj.rst:432 -msgid ":c:type:`unaryfunc`" -msgstr ":c:type:`unaryfunc`" - -#: ../../c-api/typeobj.rst:204 -msgid "__await__" -msgstr "__await__" - -#: ../../c-api/typeobj.rst:206 -msgid ":c:member:`~PyAsyncMethods.am_aiter`" -msgstr ":c:member:`~PyAsyncMethods.am_aiter`" - -#: ../../c-api/typeobj.rst:206 -msgid "__aiter__" -msgstr "__aiter__" - -#: ../../c-api/typeobj.rst:208 -msgid ":c:member:`~PyAsyncMethods.am_anext`" -msgstr ":c:member:`~PyAsyncMethods.am_anext`" - -#: ../../c-api/typeobj.rst:208 -msgid "__anext__" -msgstr "__anext__" - -#: ../../c-api/typeobj.rst:210 -msgid ":c:member:`~PyAsyncMethods.am_send`" -msgstr ":c:member:`~PyAsyncMethods.am_send`" - -#: ../../c-api/typeobj.rst:210 -msgid ":c:type:`sendfunc`" -msgstr ":c:type:`sendfunc`" - -#: ../../c-api/typeobj.rst:214 -msgid ":c:member:`~PyNumberMethods.nb_add`" -msgstr ":c:member:`~PyNumberMethods.nb_add`" - -#: ../../c-api/typeobj.rst:214 ../../c-api/typeobj.rst:217 -#: ../../c-api/typeobj.rst:219 ../../c-api/typeobj.rst:222 -#: ../../c-api/typeobj.rst:224 ../../c-api/typeobj.rst:227 -#: ../../c-api/typeobj.rst:229 ../../c-api/typeobj.rst:232 -#: ../../c-api/typeobj.rst:234 ../../c-api/typeobj.rst:252 -#: ../../c-api/typeobj.rst:255 ../../c-api/typeobj.rst:257 -#: ../../c-api/typeobj.rst:260 ../../c-api/typeobj.rst:262 -#: ../../c-api/typeobj.rst:265 ../../c-api/typeobj.rst:267 -#: ../../c-api/typeobj.rst:270 ../../c-api/typeobj.rst:272 -#: ../../c-api/typeobj.rst:275 ../../c-api/typeobj.rst:283 -#: ../../c-api/typeobj.rst:285 ../../c-api/typeobj.rst:287 -#: ../../c-api/typeobj.rst:289 ../../c-api/typeobj.rst:293 -#: ../../c-api/typeobj.rst:296 ../../c-api/typeobj.rst:302 -#: ../../c-api/typeobj.rst:311 ../../c-api/typeobj.rst:322 -#: ../../c-api/typeobj.rst:436 -msgid ":c:type:`binaryfunc`" -msgstr ":c:type:`binaryfunc`" - -#: ../../c-api/typeobj.rst:214 -msgid "__add__ __radd__" -msgstr "__add__ __radd__" - -#: ../../c-api/typeobj.rst:217 -msgid ":c:member:`~PyNumberMethods.nb_inplace_add`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_add`" - -#: ../../c-api/typeobj.rst:217 ../../c-api/typeobj.rst:322 -msgid "__iadd__" -msgstr "__iadd__" - -#: ../../c-api/typeobj.rst:219 -msgid ":c:member:`~PyNumberMethods.nb_subtract`" -msgstr ":c:member:`~PyNumberMethods.nb_subtract`" - -#: ../../c-api/typeobj.rst:219 -msgid "__sub__ __rsub__" -msgstr "__sub__ __rsub__" - -#: ../../c-api/typeobj.rst:222 -msgid ":c:member:`~PyNumberMethods.nb_inplace_subtract`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_subtract`" - -#: ../../c-api/typeobj.rst:222 -msgid "__isub__" -msgstr "__isub__" - -#: ../../c-api/typeobj.rst:224 -msgid ":c:member:`~PyNumberMethods.nb_multiply`" -msgstr ":c:member:`~PyNumberMethods.nb_multiply`" - -#: ../../c-api/typeobj.rst:224 -msgid "__mul__ __rmul__" -msgstr "__mul__ __rmul__" - -#: ../../c-api/typeobj.rst:227 -msgid ":c:member:`~PyNumberMethods.nb_inplace_multiply`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_multiply`" - -#: ../../c-api/typeobj.rst:227 ../../c-api/typeobj.rst:324 -msgid "__imul__" -msgstr "__imul__" - -#: ../../c-api/typeobj.rst:229 -msgid ":c:member:`~PyNumberMethods.nb_remainder`" -msgstr ":c:member:`~PyNumberMethods.nb_remainder`" - -#: ../../c-api/typeobj.rst:229 -msgid "__mod__ __rmod__" -msgstr "__mod__ __rmod__" - -#: ../../c-api/typeobj.rst:232 -msgid ":c:member:`~PyNumberMethods.nb_inplace_remainder`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_remainder`" - -#: ../../c-api/typeobj.rst:232 -msgid "__imod__" -msgstr "__imod__" - -#: ../../c-api/typeobj.rst:234 -msgid ":c:member:`~PyNumberMethods.nb_divmod`" -msgstr ":c:member:`~PyNumberMethods.nb_divmod`" - -#: ../../c-api/typeobj.rst:234 -msgid "__divmod__ __rdivmod__" -msgstr "__divmod__ __rdivmod__" - -#: ../../c-api/typeobj.rst:237 -msgid ":c:member:`~PyNumberMethods.nb_power`" -msgstr ":c:member:`~PyNumberMethods.nb_power`" - -#: ../../c-api/typeobj.rst:237 -msgid "__pow__ __rpow__" -msgstr "__pow__ __rpow__" - -#: ../../c-api/typeobj.rst:240 -msgid ":c:member:`~PyNumberMethods.nb_inplace_power`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_power`" - -#: ../../c-api/typeobj.rst:240 -msgid "__ipow__" -msgstr "__ipow__" - -#: ../../c-api/typeobj.rst:242 -msgid ":c:member:`~PyNumberMethods.nb_negative`" -msgstr ":c:member:`~PyNumberMethods.nb_negative`" - -#: ../../c-api/typeobj.rst:242 -msgid "__neg__" -msgstr "__neg__" - -#: ../../c-api/typeobj.rst:244 -msgid ":c:member:`~PyNumberMethods.nb_positive`" -msgstr ":c:member:`~PyNumberMethods.nb_positive`" - -#: ../../c-api/typeobj.rst:244 -msgid "__pos__" -msgstr "__pos__" - -#: ../../c-api/typeobj.rst:246 -msgid ":c:member:`~PyNumberMethods.nb_absolute`" -msgstr ":c:member:`~PyNumberMethods.nb_absolute`" - -#: ../../c-api/typeobj.rst:246 -msgid "__abs__" -msgstr "__abs__" - -#: ../../c-api/typeobj.rst:248 -msgid ":c:member:`~PyNumberMethods.nb_bool`" -msgstr ":c:member:`~PyNumberMethods.nb_bool`" - -#: ../../c-api/typeobj.rst:248 -msgid "__bool__" -msgstr "__bool__" - -#: ../../c-api/typeobj.rst:250 -msgid ":c:member:`~PyNumberMethods.nb_invert`" -msgstr ":c:member:`~PyNumberMethods.nb_invert`" - -#: ../../c-api/typeobj.rst:250 -msgid "__invert__" -msgstr "__invert__" - -#: ../../c-api/typeobj.rst:252 -msgid ":c:member:`~PyNumberMethods.nb_lshift`" -msgstr ":c:member:`~PyNumberMethods.nb_lshift`" - -#: ../../c-api/typeobj.rst:252 -msgid "__lshift__ __rlshift__" -msgstr "__lshift__ __rlshift__" - -#: ../../c-api/typeobj.rst:255 -msgid ":c:member:`~PyNumberMethods.nb_inplace_lshift`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_lshift`" - -#: ../../c-api/typeobj.rst:255 -msgid "__ilshift__" -msgstr "__ilshift__" - -#: ../../c-api/typeobj.rst:257 -msgid ":c:member:`~PyNumberMethods.nb_rshift`" -msgstr ":c:member:`~PyNumberMethods.nb_rshift`" - -#: ../../c-api/typeobj.rst:257 -msgid "__rshift__ __rrshift__" -msgstr "__rshift__ __rrshift__" - -#: ../../c-api/typeobj.rst:260 -msgid ":c:member:`~PyNumberMethods.nb_inplace_rshift`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_rshift`" - -#: ../../c-api/typeobj.rst:260 -msgid "__irshift__" -msgstr "__irshift__" - -#: ../../c-api/typeobj.rst:262 -msgid ":c:member:`~PyNumberMethods.nb_and`" -msgstr ":c:member:`~PyNumberMethods.nb_and`" - -#: ../../c-api/typeobj.rst:262 -msgid "__and__ __rand__" -msgstr "__and__ __rand__" - -#: ../../c-api/typeobj.rst:265 -msgid ":c:member:`~PyNumberMethods.nb_inplace_and`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_and`" - -#: ../../c-api/typeobj.rst:265 -msgid "__iand__" -msgstr "__iand__" - -#: ../../c-api/typeobj.rst:267 -msgid ":c:member:`~PyNumberMethods.nb_xor`" -msgstr ":c:member:`~PyNumberMethods.nb_xor`" - -#: ../../c-api/typeobj.rst:267 -msgid "__xor__ __rxor__" -msgstr "__xor__ __rxor__" - -#: ../../c-api/typeobj.rst:270 -msgid ":c:member:`~PyNumberMethods.nb_inplace_xor`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_xor`" - -#: ../../c-api/typeobj.rst:270 -msgid "__ixor__" -msgstr "__ixor__" - -#: ../../c-api/typeobj.rst:272 -msgid ":c:member:`~PyNumberMethods.nb_or`" -msgstr ":c:member:`~PyNumberMethods.nb_or`" - -#: ../../c-api/typeobj.rst:272 -msgid "__or__ __ror__" -msgstr "__or__ __ror__" - -#: ../../c-api/typeobj.rst:275 -msgid ":c:member:`~PyNumberMethods.nb_inplace_or`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_or`" - -#: ../../c-api/typeobj.rst:275 -msgid "__ior__" -msgstr "__ior__" - -#: ../../c-api/typeobj.rst:277 -msgid ":c:member:`~PyNumberMethods.nb_int`" -msgstr ":c:member:`~PyNumberMethods.nb_int`" - -#: ../../c-api/typeobj.rst:277 -msgid "__int__" -msgstr "__int__" - -#: ../../c-api/typeobj.rst:279 -msgid ":c:member:`~PyNumberMethods.nb_reserved`" -msgstr ":c:member:`~PyNumberMethods.nb_reserved`" - -#: ../../c-api/typeobj.rst:281 -msgid ":c:member:`~PyNumberMethods.nb_float`" -msgstr ":c:member:`~PyNumberMethods.nb_float`" - -#: ../../c-api/typeobj.rst:281 -msgid "__float__" -msgstr "__float__" - -#: ../../c-api/typeobj.rst:283 -msgid ":c:member:`~PyNumberMethods.nb_floor_divide`" -msgstr ":c:member:`~PyNumberMethods.nb_floor_divide`" - -#: ../../c-api/typeobj.rst:283 -msgid "__floordiv__" -msgstr "__floordiv__" - -#: ../../c-api/typeobj.rst:285 -msgid ":c:member:`~PyNumberMethods.nb_inplace_floor_divide`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_floor_divide`" - -#: ../../c-api/typeobj.rst:285 -msgid "__ifloordiv__" -msgstr "__ifloordiv__" - -#: ../../c-api/typeobj.rst:287 -msgid ":c:member:`~PyNumberMethods.nb_true_divide`" -msgstr ":c:member:`~PyNumberMethods.nb_true_divide`" - -#: ../../c-api/typeobj.rst:287 -msgid "__truediv__" -msgstr "__truediv__" - -#: ../../c-api/typeobj.rst:289 -msgid ":c:member:`~PyNumberMethods.nb_inplace_true_divide`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_true_divide`" - -#: ../../c-api/typeobj.rst:289 -msgid "__itruediv__" -msgstr "__itruediv__" - -#: ../../c-api/typeobj.rst:291 -msgid ":c:member:`~PyNumberMethods.nb_index`" -msgstr ":c:member:`~PyNumberMethods.nb_index`" - -#: ../../c-api/typeobj.rst:291 -msgid "__index__" -msgstr "__index__" - -#: ../../c-api/typeobj.rst:293 -msgid ":c:member:`~PyNumberMethods.nb_matrix_multiply`" -msgstr ":c:member:`~PyNumberMethods.nb_matrix_multiply`" - -#: ../../c-api/typeobj.rst:293 -msgid "__matmul__ __rmatmul__" -msgstr "__matmul__ __rmatmul__" - -#: ../../c-api/typeobj.rst:296 -msgid ":c:member:`~PyNumberMethods.nb_inplace_matrix_multiply`" -msgstr ":c:member:`~PyNumberMethods.nb_inplace_matrix_multiply`" - -#: ../../c-api/typeobj.rst:296 -msgid "__imatmul__" -msgstr "__imatmul__" - -#: ../../c-api/typeobj.rst:300 -msgid ":c:member:`~PyMappingMethods.mp_length`" -msgstr ":c:member:`~PyMappingMethods.mp_length`" - -#: ../../c-api/typeobj.rst:300 ../../c-api/typeobj.rst:309 -#: ../../c-api/typeobj.rst:417 -msgid ":c:type:`lenfunc`" -msgstr ":c:type:`lenfunc`" - -#: ../../c-api/typeobj.rst:300 ../../c-api/typeobj.rst:309 -msgid "__len__" -msgstr "__len__" - -#: ../../c-api/typeobj.rst:302 -msgid ":c:member:`~PyMappingMethods.mp_subscript`" -msgstr ":c:member:`~PyMappingMethods.mp_subscript`" - -#: ../../c-api/typeobj.rst:302 ../../c-api/typeobj.rst:315 -msgid "__getitem__" -msgstr "__getitem__" - -#: ../../c-api/typeobj.rst:304 -msgid ":c:member:`~PyMappingMethods.mp_ass_subscript`" -msgstr ":c:member:`~PyMappingMethods.mp_ass_subscript`" - -#: ../../c-api/typeobj.rst:304 ../../c-api/typeobj.rst:463 -msgid ":c:type:`objobjargproc`" -msgstr ":c:type:`objobjargproc`" - -#: ../../c-api/typeobj.rst:304 -msgid "__setitem__, __delitem__" -msgstr "__setitem__, __delitem__" - -#: ../../c-api/typeobj.rst:309 -msgid ":c:member:`~PySequenceMethods.sq_length`" -msgstr ":c:member:`~PySequenceMethods.sq_length`" - -#: ../../c-api/typeobj.rst:311 -msgid ":c:member:`~PySequenceMethods.sq_concat`" -msgstr ":c:member:`~PySequenceMethods.sq_concat`" - -#: ../../c-api/typeobj.rst:311 -msgid "__add__" -msgstr "__add__" - -#: ../../c-api/typeobj.rst:313 -msgid ":c:member:`~PySequenceMethods.sq_repeat`" -msgstr ":c:member:`~PySequenceMethods.sq_repeat`" - -#: ../../c-api/typeobj.rst:313 ../../c-api/typeobj.rst:315 -#: ../../c-api/typeobj.rst:324 ../../c-api/typeobj.rst:447 -msgid ":c:type:`ssizeargfunc`" -msgstr ":c:type:`ssizeargfunc`" - -#: ../../c-api/typeobj.rst:313 -msgid "__mul__" -msgstr "__mul__" - -#: ../../c-api/typeobj.rst:315 -msgid ":c:member:`~PySequenceMethods.sq_item`" -msgstr ":c:member:`~PySequenceMethods.sq_item`" - -#: ../../c-api/typeobj.rst:317 -msgid ":c:member:`~PySequenceMethods.sq_ass_item`" -msgstr ":c:member:`~PySequenceMethods.sq_ass_item`" - -#: ../../c-api/typeobj.rst:317 ../../c-api/typeobj.rst:452 -msgid ":c:type:`ssizeobjargproc`" -msgstr ":c:type:`ssizeobjargproc`" - -#: ../../c-api/typeobj.rst:317 -msgid "__setitem__ __delitem__" -msgstr "__setitem__ __delitem__" - -#: ../../c-api/typeobj.rst:320 -msgid ":c:member:`~PySequenceMethods.sq_contains`" -msgstr ":c:member:`~PySequenceMethods.sq_contains`" - -#: ../../c-api/typeobj.rst:320 ../../c-api/typeobj.rst:458 -msgid ":c:type:`objobjproc`" -msgstr ":c:type:`objobjproc`" - -#: ../../c-api/typeobj.rst:320 -msgid "__contains__" -msgstr "__contains__" - -#: ../../c-api/typeobj.rst:322 -msgid ":c:member:`~PySequenceMethods.sq_inplace_concat`" -msgstr ":c:member:`~PySequenceMethods.sq_inplace_concat`" - -#: ../../c-api/typeobj.rst:324 -msgid ":c:member:`~PySequenceMethods.sq_inplace_repeat`" -msgstr ":c:member:`~PySequenceMethods.sq_inplace_repeat`" - -#: ../../c-api/typeobj.rst:328 -msgid ":c:member:`~PyBufferProcs.bf_getbuffer`" -msgstr ":c:member:`~PyBufferProcs.bf_getbuffer`" - -#: ../../c-api/typeobj.rst:328 -msgid ":c:func:`getbufferproc`" -msgstr ":c:func:`getbufferproc`" - -#: ../../c-api/typeobj.rst:328 -msgid "__buffer__" -msgstr "__buffer__" - -#: ../../c-api/typeobj.rst:330 -msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`" -msgstr ":c:member:`~PyBufferProcs.bf_releasebuffer`" - -#: ../../c-api/typeobj.rst:330 -msgid ":c:func:`releasebufferproc`" -msgstr ":c:func:`releasebufferproc`" - -#: ../../c-api/typeobj.rst:330 -msgid "__release_ buffer\\__" -msgstr "__release_ buffer\\__" - -#: ../../c-api/typeobj.rst:337 -msgid "slot typedefs" -msgstr "Slot-Typedefs" - -#: ../../c-api/typeobj.rst:340 -msgid "typedef" -msgstr "typedef" - -#: ../../c-api/typeobj.rst:340 -msgid "Parameter Types" -msgstr "Parametertypen" - -#: ../../c-api/typeobj.rst:340 -msgid "Return Type" -msgstr "Rückgabetyp" - -#: ../../c-api/typeobj.rst:347 ../../c-api/typeobj.rst:349 -#: ../../c-api/typeobj.rst:425 -msgid "void" -msgstr "void" - -#: ../../c-api/typeobj.rst:352 -msgid ":c:type:`visitproc`" -msgstr ":c:type:`visitproc`" - -#: ../../c-api/typeobj.rst:351 ../../c-api/typeobj.rst:363 -#: ../../c-api/typeobj.rst:376 ../../c-api/typeobj.rst:387 -#: ../../c-api/typeobj.rst:399 ../../c-api/typeobj.rst:409 -#: ../../c-api/typeobj.rst:419 ../../c-api/typeobj.rst:421 -#: ../../c-api/typeobj.rst:430 ../../c-api/typeobj.rst:452 -#: ../../c-api/typeobj.rst:458 ../../c-api/typeobj.rst:463 -msgid "int" -msgstr "int" - -#: ../../c-api/typeobj.rst:405 -msgid "Py_hash_t" -msgstr "Py_hash_t" - -#: ../../c-api/typeobj.rst:419 -msgid ":c:type:`getbufferproc`" -msgstr ":c:type:`getbufferproc`" - -#: ../../c-api/typeobj.rst:420 ../../c-api/typeobj.rst:426 -msgid ":c:type:`Py_buffer` *" -msgstr ":c:type:`Py_buffer` *" - -#: ../../c-api/typeobj.rst:425 -msgid ":c:type:`releasebufferproc`" -msgstr ":c:type:`releasebufferproc`" - -#: ../../c-api/typeobj.rst:470 -msgid "See :ref:`slot-typedefs` below for more detail." -msgstr "Mehr dazu steht unten unter :ref:`slot-typedefs`." - -#: ../../c-api/typeobj.rst:474 -msgid "PyTypeObject Definition" -msgstr "Definition von PyTypeObject" - -#: ../../c-api/typeobj.rst:476 -msgid "" -"The structure definition for :c:type:`PyTypeObject` can be found " -"in :file:`Include/cpython/object.h`. For convenience of reference, this " -"repeats the definition found there:" -msgstr "" -"Die Strukturdefinition für :c:type:`PyTypeObject` steht in :file:`Include/" -"cpython/object.h`. Der Bequemlichkeit halber ist sie hier wiederholt:" - -#: ../../c-api/typeobj.rst:482 -msgid "" -"typedef struct _typeobject {\n" -" PyObject_VAR_HEAD\n" -" const char *tp_name; /* For printing, in format \".\" */\n" -" Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */\n" -"\n" -" /* Methods to implement standard operations */\n" -"\n" -" destructor tp_dealloc;\n" -" Py_ssize_t tp_vectorcall_offset;\n" -" getattrfunc tp_getattr;\n" -" setattrfunc tp_setattr;\n" -" PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)\n" -" or tp_reserved (Python 3) */\n" -" reprfunc tp_repr;\n" -"\n" -" /* Method suites for standard classes */\n" -"\n" -" PyNumberMethods *tp_as_number;\n" -" PySequenceMethods *tp_as_sequence;\n" -" PyMappingMethods *tp_as_mapping;\n" -"\n" -" /* More standard operations (here for binary compatibility) */\n" -"\n" -" hashfunc tp_hash;\n" -" ternaryfunc tp_call;\n" -" reprfunc tp_str;\n" -" getattrofunc tp_getattro;\n" -" setattrofunc tp_setattro;\n" -"\n" -" /* Functions to access object as input/output buffer */\n" -" PyBufferProcs *tp_as_buffer;\n" -"\n" -" /* Flags to define presence of optional/expanded features */\n" -" unsigned long tp_flags;\n" -"\n" -" const char *tp_doc; /* Documentation string */\n" -"\n" -" /* Assigned meaning in release 2.0 */\n" -" /* call function for all accessible objects */\n" -" traverseproc tp_traverse;\n" -"\n" -" /* delete references to contained objects */\n" -" inquiry tp_clear;\n" -"\n" -" /* Assigned meaning in release 2.1 */\n" -" /* rich comparisons */\n" -" richcmpfunc tp_richcompare;\n" -"\n" -" /* weak reference enabler */\n" -" Py_ssize_t tp_weaklistoffset;\n" -"\n" -" /* Iterators */\n" -" getiterfunc tp_iter;\n" -" iternextfunc tp_iternext;\n" -"\n" -" /* Attribute descriptor and subclassing stuff */\n" -" PyMethodDef *tp_methods;\n" -" PyMemberDef *tp_members;\n" -" PyGetSetDef *tp_getset;\n" -" // Strong reference on a heap type, borrowed reference on a static type\n" -" PyTypeObject *tp_base;\n" -" PyObject *tp_dict;\n" -" descrgetfunc tp_descr_get;\n" -" descrsetfunc tp_descr_set;\n" -" Py_ssize_t tp_dictoffset;\n" -" initproc tp_init;\n" -" allocfunc tp_alloc;\n" -" newfunc tp_new;\n" -" freefunc tp_free; /* Low-level free-memory routine */\n" -" inquiry tp_is_gc; /* For PyObject_IS_GC */\n" -" PyObject *tp_bases;\n" -" PyObject *tp_mro; /* method resolution order */\n" -" PyObject *tp_cache; /* no longer used */\n" -" void *tp_subclasses; /* for static builtin types this is an index */\n" -" PyObject *tp_weaklist; /* not used for static builtin types */\n" -" destructor tp_del;\n" -"\n" -" /* Type attribute cache version tag. Added in version 2.6.\n" -" * If zero, the cache is invalid and must be initialized.\n" -" */\n" -" unsigned int tp_version_tag;\n" -"\n" -" destructor tp_finalize;\n" -" vectorcallfunc tp_vectorcall;\n" -"\n" -" /* bitset of which type-watchers care about this type */\n" -" unsigned char tp_watched;\n" -"\n" -" /* Number of tp_version_tag values used.\n" -" * Set to _Py_ATTR_CACHE_UNUSED if the attribute cache is\n" -" * disabled for this type (e.g. due to custom MRO entries).\n" -" * Otherwise, limited to MAX_VERSIONS_PER_CLASS (defined elsewhere).\n" -" */\n" -" uint16_t tp_versions_used;\n" -"} PyTypeObject;\n" -msgstr "" -"typedef struct _typeobject {\n" -" PyObject_VAR_HEAD\n" -" const char *tp_name; /* For printing, in format \".\" */\n" -" Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */\n" -"\n" -" /* Methods to implement standard operations */\n" -"\n" -" destructor tp_dealloc;\n" -" Py_ssize_t tp_vectorcall_offset;\n" -" getattrfunc tp_getattr;\n" -" setattrfunc tp_setattr;\n" -" PyAsyncMethods *tp_as_async; /* formerly known as tp_compare (Python 2)\n" -" or tp_reserved (Python 3) */\n" -" reprfunc tp_repr;\n" -"\n" -" /* Method suites for standard classes */\n" -"\n" -" PyNumberMethods *tp_as_number;\n" -" PySequenceMethods *tp_as_sequence;\n" -" PyMappingMethods *tp_as_mapping;\n" -"\n" -" /* More standard operations (here for binary compatibility) */\n" -"\n" -" hashfunc tp_hash;\n" -" ternaryfunc tp_call;\n" -" reprfunc tp_str;\n" -" getattrofunc tp_getattro;\n" -" setattrofunc tp_setattro;\n" -"\n" -" /* Functions to access object as input/output buffer */\n" -" PyBufferProcs *tp_as_buffer;\n" -"\n" -" /* Flags to define presence of optional/expanded features */\n" -" unsigned long tp_flags;\n" -"\n" -" const char *tp_doc; /* Documentation string */\n" -"\n" -" /* Assigned meaning in release 2.0 */\n" -" /* call function for all accessible objects */\n" -" traverseproc tp_traverse;\n" -"\n" -" /* delete references to contained objects */\n" -" inquiry tp_clear;\n" -"\n" -" /* Assigned meaning in release 2.1 */\n" -" /* rich comparisons */\n" -" richcmpfunc tp_richcompare;\n" -"\n" -" /* weak reference enabler */\n" -" Py_ssize_t tp_weaklistoffset;\n" -"\n" -" /* Iterators */\n" -" getiterfunc tp_iter;\n" -" iternextfunc tp_iternext;\n" -"\n" -" /* Attribute descriptor and subclassing stuff */\n" -" PyMethodDef *tp_methods;\n" -" PyMemberDef *tp_members;\n" -" PyGetSetDef *tp_getset;\n" -" // Strong reference on a heap type, borrowed reference on a static type\n" -" PyTypeObject *tp_base;\n" -" PyObject *tp_dict;\n" -" descrgetfunc tp_descr_get;\n" -" descrsetfunc tp_descr_set;\n" -" Py_ssize_t tp_dictoffset;\n" -" initproc tp_init;\n" -" allocfunc tp_alloc;\n" -" newfunc tp_new;\n" -" freefunc tp_free; /* Low-level free-memory routine */\n" -" inquiry tp_is_gc; /* For PyObject_IS_GC */\n" -" PyObject *tp_bases;\n" -" PyObject *tp_mro; /* method resolution order */\n" -" PyObject *tp_cache; /* no longer used */\n" -" void *tp_subclasses; /* for static builtin types this is an index */\n" -" PyObject *tp_weaklist; /* not used for static builtin types */\n" -" destructor tp_del;\n" -"\n" -" /* Type attribute cache version tag. Added in version 2.6.\n" -" * If zero, the cache is invalid and must be initialized.\n" -" */\n" -" unsigned int tp_version_tag;\n" -"\n" -" destructor tp_finalize;\n" -" vectorcallfunc tp_vectorcall;\n" -"\n" -" /* bitset of which type-watchers care about this type */\n" -" unsigned char tp_watched;\n" -"\n" -" /* Number of tp_version_tag values used.\n" -" * Set to _Py_ATTR_CACHE_UNUSED if the attribute cache is\n" -" * disabled for this type (e.g. due to custom MRO entries).\n" -" * Otherwise, limited to MAX_VERSIONS_PER_CLASS (defined elsewhere).\n" -" */\n" -" uint16_t tp_versions_used;\n" -"} PyTypeObject;\n" - -#: ../../c-api/typeobj.rst:487 -msgid "PyObject Slots" -msgstr "PyObject-Slots" - -#: ../../c-api/typeobj.rst:489 -msgid "" -"The type object structure extends the :c:type:`PyVarObject` structure. " -"The :c:member:`~PyVarObject.ob_size` field is used for dynamic types " -"(created by :c:func:`!type_new`, usually called from a class statement). " -"Note that :c:data:`PyType_Type` (the metatype) " -"initializes :c:member:`~PyTypeObject.tp_itemsize`, which means that its " -"instances (i.e. type objects) *must* have " -"the :c:member:`~PyVarObject.ob_size` field." -msgstr "" -"Die Struktur des Typobjekts erweitert die Struktur :c:type:`PyVarObject`. " -"Das Feld :c:member:`~PyVarObject.ob_size` wird für dynamische Typen " -"verwendet (erzeugt von :c:func:`!type_new`, üblicherweise aus einer class-" -"Anweisung heraus aufgerufen). Beachte, dass :c:data:`PyType_Type` (der " -"Metatyp) :c:member:`~PyTypeObject.tp_itemsize` initialisiert, was bedeutet, " -"dass seine Instanzen (also Typobjekte) das " -"Feld :c:member:`~PyVarObject.ob_size` haben *müssen*." - -#: ../../c-api/typeobj.rst:496 -msgid ":c:member:`PyObject.ob_refcnt`" -msgstr ":c:member:`PyObject.ob_refcnt`" - -#: ../../c-api/typeobj.rst:498 -msgid "" -"The type object's reference count is initialized to ``1`` by the " -"``PyObject_HEAD_INIT`` macro. Note that for :ref:`statically allocated type " -"objects `, the type's instances (objects " -"whose :c:member:`~PyObject.ob_type` points back to the type) do *not* count " -"as references. But for :ref:`dynamically allocated type objects `, the instances *do* count as references." -msgstr "" -"Der Referenzzähler des Typobjekts wird vom Makro ``PyObject_HEAD_INIT`` auf " -"``1`` initialisiert. Beachte, dass bei :ref:`statisch angelegten Typobjekten " -"` die Instanzen des Typs (Objekte, " -"deren :c:member:`~PyObject.ob_type` auf den Typ zurückverweist) *nicht* als " -"Referenzen zählen. Bei :ref:`dynamisch angelegten Typobjekten ` " -"zählen die Instanzen dagegen *sehr wohl* als Referenzen." - -#: ../../c-api/typeobj.rst:505 ../../c-api/typeobj.rst:528 -#: ../../c-api/typeobj.rst:544 ../../c-api/typeobj.rst:591 -#: ../../c-api/typeobj.rst:673 ../../c-api/typeobj.rst:817 -#: ../../c-api/typeobj.rst:862 ../../c-api/typeobj.rst:881 -#: ../../c-api/typeobj.rst:900 ../../c-api/typeobj.rst:918 -#: ../../c-api/typeobj.rst:944 ../../c-api/typeobj.rst:961 -#: ../../c-api/typeobj.rst:973 ../../c-api/typeobj.rst:985 -#: ../../c-api/typeobj.rst:1020 ../../c-api/typeobj.rst:1044 -#: ../../c-api/typeobj.rst:1066 ../../c-api/typeobj.rst:1089 -#: ../../c-api/typeobj.rst:1117 ../../c-api/typeobj.rst:1136 -#: ../../c-api/typeobj.rst:1155 ../../c-api/typeobj.rst:1195 -#: ../../c-api/typeobj.rst:1206 ../../c-api/typeobj.rst:1216 -#: ../../c-api/typeobj.rst:1226 ../../c-api/typeobj.rst:1240 -#: ../../c-api/typeobj.rst:1258 ../../c-api/typeobj.rst:1281 -#: ../../c-api/typeobj.rst:1299 ../../c-api/typeobj.rst:1314 -#: ../../c-api/typeobj.rst:1349 ../../c-api/typeobj.rst:1396 -#: ../../c-api/typeobj.rst:1422 ../../c-api/typeobj.rst:1441 -#: ../../c-api/typeobj.rst:1471 ../../c-api/typeobj.rst:1493 -#: ../../c-api/typeobj.rst:1531 ../../c-api/typeobj.rst:1543 -#: ../../c-api/typeobj.rst:1569 ../../c-api/typeobj.rst:1583 -#: ../../c-api/typeobj.rst:1729 ../../c-api/typeobj.rst:1796 -#: ../../c-api/typeobj.rst:1832 ../../c-api/typeobj.rst:1859 -#: ../../c-api/typeobj.rst:1885 ../../c-api/typeobj.rst:1900 -#: ../../c-api/typeobj.rst:1917 ../../c-api/typeobj.rst:1933 -#: ../../c-api/typeobj.rst:1965 ../../c-api/typeobj.rst:1997 -#: ../../c-api/typeobj.rst:2025 ../../c-api/typeobj.rst:2045 -#: ../../c-api/typeobj.rst:2074 ../../c-api/typeobj.rst:2120 -#: ../../c-api/typeobj.rst:2139 ../../c-api/typeobj.rst:2181 -#: ../../c-api/typeobj.rst:2206 ../../c-api/typeobj.rst:2246 -#: ../../c-api/typeobj.rst:2271 ../../c-api/typeobj.rst:2284 -#: ../../c-api/typeobj.rst:2294 ../../c-api/typeobj.rst:2311 -#: ../../c-api/typeobj.rst:2328 ../../c-api/typeobj.rst:2344 -#: ../../c-api/typeobj.rst:2488 ../../c-api/typeobj.rst:2548 -msgid "**Inheritance:**" -msgstr "**Vererbung:**" - -#: ../../c-api/typeobj.rst:507 ../../c-api/typeobj.rst:546 -#: ../../c-api/typeobj.rst:593 -msgid "This field is not inherited by subtypes." -msgstr "Dieses Feld wird nicht an Untertypen vererbt." - -#: ../../c-api/typeobj.rst:510 -msgid ":c:member:`PyObject.ob_type`" -msgstr ":c:member:`PyObject.ob_type`" - -#: ../../c-api/typeobj.rst:512 -msgid "" -"This is the type's type, in other words its metatype. It is initialized by " -"the argument to the ``PyObject_HEAD_INIT`` macro, and its value should " -"normally be ``&PyType_Type``. However, for dynamically loadable extension " -"modules that must be usable on Windows (at least), the compiler complains " -"that this is not a valid initializer. Therefore, the convention is to pass " -"``NULL`` to the ``PyObject_HEAD_INIT`` macro and to initialize this field " -"explicitly at the start of the module's initialization function, before " -"doing anything else. This is typically done like this::" -msgstr "" -"Das ist der Typ des Typs, mit anderen Worten sein Metatyp. Er wird durch das " -"Argument des Makros ``PyObject_HEAD_INIT`` initialisiert, und sein Wert " -"sollte normalerweise ``&PyType_Type`` sein. Bei dynamisch ladbaren " -"Erweiterungsmodulen, die (zumindest) unter Windows verwendbar sein müssen, " -"beschwert sich der Compiler allerdings, dass das kein gültiger " -"Initialisierer sei. Deshalb ist es üblich, dem Makro ``PyObject_HEAD_INIT`` " -"``NULL`` zu übergeben und dieses Feld ausdrücklich am Anfang der " -"Initialisierungsfunktion des Moduls zu setzen, bevor irgendetwas anderes " -"geschieht. Üblicherweise sieht das so aus::" - -#: ../../c-api/typeobj.rst:521 -msgid "Foo_Type.ob_type = &PyType_Type;" -msgstr "Foo_Type.ob_type = &PyType_Type;" - -#: ../../c-api/typeobj.rst:523 -msgid "" -"This should be done before any instances of the type are " -"created. :c:func:`PyType_Ready` checks if :c:member:`~PyObject.ob_type` is " -"``NULL``, and if so, initializes it to the :c:member:`~PyObject.ob_type` " -"field of the base class. :c:func:`PyType_Ready` will not change this field " -"if it is non-zero." -msgstr "" -"Das sollte geschehen, bevor Instanzen des Typs erzeugt " -"werden. :c:func:`PyType_Ready` prüft, ob :c:member:`~PyObject.ob_type` " -"``NULL`` ist, und initialisiert es in diesem Fall mit dem " -"Feld :c:member:`~PyObject.ob_type` der Basisklasse. :c:func:`PyType_Ready` " -"ändert dieses Feld nicht, wenn es ungleich null ist." - -#: ../../c-api/typeobj.rst:530 ../../c-api/typeobj.rst:819 -#: ../../c-api/typeobj.rst:946 ../../c-api/typeobj.rst:1046 -#: ../../c-api/typeobj.rst:1068 ../../c-api/typeobj.rst:1861 -#: ../../c-api/typeobj.rst:1887 ../../c-api/typeobj.rst:2027 -#: ../../c-api/typeobj.rst:2047 ../../c-api/typeobj.rst:2122 -#: ../../c-api/typeobj.rst:2248 ../../c-api/typeobj.rst:2490 -msgid "This field is inherited by subtypes." -msgstr "Dieses Feld wird an Untertypen vererbt." - -#: ../../c-api/typeobj.rst:534 -msgid "PyVarObject Slots" -msgstr "PyVarObject-Slots" - -#: ../../c-api/typeobj.rst:536 -msgid ":c:member:`PyVarObject.ob_size`" -msgstr ":c:member:`PyVarObject.ob_size`" - -#: ../../c-api/typeobj.rst:538 -msgid "" -"For :ref:`statically allocated type objects `, this should be " -"initialized to zero. For :ref:`dynamically allocated type objects `, this field has a special internal meaning." -msgstr "" -"Bei :ref:`statisch angelegten Typobjekten ` sollte das auf " -"null initialisiert werden. Bei :ref:`dynamisch angelegten Typobjekten ` hat dieses Feld eine besondere interne Bedeutung." - -#: ../../c-api/typeobj.rst:542 -msgid "This field should be accessed using the :c:func:`Py_SIZE()` macro." -msgstr "" -"Auf dieses Feld sollte über das Makro :c:func:`Py_SIZE()` zugegriffen werden." - -#: ../../c-api/typeobj.rst:550 -msgid "PyTypeObject Slots" -msgstr "PyTypeObject-Slots" - -#: ../../c-api/typeobj.rst:552 -msgid "" -"Each slot has a section describing inheritance. If :c:func:`PyType_Ready` " -"may set a value when the field is set to ``NULL`` then there will also be a " -"\"Default\" section. (Note that many fields set " -"on :c:data:`PyBaseObject_Type` and :c:data:`PyType_Type` effectively act as " -"defaults.)" -msgstr "" -"Zu jedem Slot gibt es einen Abschnitt, der die Vererbung beschreibt. " -"Kann :c:func:`PyType_Ready` einen Wert setzen, wenn das Feld auf ``NULL`` " -"gesetzt ist, gibt es außerdem einen Abschnitt „Vorgabe“. (Beachte, dass " -"viele Felder, die an :c:data:`PyBaseObject_Type` und :c:data:`PyType_Type` " -"gesetzt sind, praktisch wie Vorgaben wirken.)" - -#: ../../c-api/typeobj.rst:559 -msgid "" -"See :c:macro:`Py_tp_name` for the corresponding :c:member:`Slot ID " -"`." -msgstr "" -"Die zugehörige :c:member:`Slot-ID ` steht " -"unter :c:macro:`Py_tp_name`." - -#: ../../c-api/typeobj.rst:562 -msgid "" -"Pointer to a NUL-terminated string containing the name of the type. For " -"types that are accessible as module globals, the string should be the full " -"module name, followed by a dot, followed by the type name; for built-in " -"types, it should be just the type name. If the module is a submodule of a " -"package, the full package name is part of the full module name. For " -"example, a type named :class:`!T` defined in module :mod:`!M` in " -"subpackage :mod:`!Q` in package :mod:`!P` should have " -"the :c:member:`~PyTypeObject.tp_name` initializer ``\"P.Q.M.T\"``." -msgstr "" -"Zeiger auf eine NUL-terminierte Zeichenkette mit dem Namen des Typs. Bei " -"Typen, die als Modulglobale zugänglich sind, sollte die Zeichenkette der " -"vollständige Modulname sein, gefolgt von einem Punkt und dem Typnamen. Bei " -"integrierten Typen sollte es nur der Typname sein. Ist das Modul ein " -"Untermodul eines Pakets, gehört der vollständige Paketname zum vollständigen " -"Modulnamen. Ein Typ namens :class:`!T` zum Beispiel, der im Modul :mod:`!M` " -"im Unterpaket :mod:`!Q` im Paket :mod:`!P` definiert ist, sollte " -"den :c:member:`~PyTypeObject.tp_name`-Initialisierer ``\"P.Q.M.T\"`` haben." - -#: ../../c-api/typeobj.rst:570 -msgid "" -"For :ref:`dynamically allocated type objects `, this should just " -"be the type name, and the module name explicitly stored in the type dict as " -"the value for key ``'__module__'``." -msgstr "" -"Bei :ref:`dynamisch angelegten Typobjekten ` sollte das nur der " -"Typname sein. Der Modulname wird ausdrücklich im Dictionary des Typs unter " -"dem Schlüssel ``'__module__'`` abgelegt." - -#: ../../c-api/typeobj.rst:575 -msgid "" -"For :ref:`statically allocated type objects `, the *tp_name* " -"field should contain a dot. Everything before the last dot is made " -"accessible as the :attr:`~type.__module__` attribute, and everything after " -"the last dot is made accessible as the :attr:`~type.__name__` attribute." -msgstr "" -"Bei :ref:`statisch angelegten Typobjekten ` sollte das Feld " -"*tp_name* einen Punkt enthalten. Alles vor dem letzten Punkt wird als " -"Attribut :attr:`~type.__module__` zugänglich gemacht, alles nach dem letzten " -"Punkt als Attribut :attr:`~type.__name__`." - -#: ../../c-api/typeobj.rst:581 -msgid "" -"If no dot is present, the entire :c:member:`~PyTypeObject.tp_name` field is " -"made accessible as the :attr:`~type.__name__` attribute, and " -"the :attr:`~type.__module__` attribute is undefined (unless explicitly set " -"in the dictionary, as explained above). This means your type will be " -"impossible to pickle. Additionally, it will not be listed in module " -"documentations created with pydoc." -msgstr "" -"Ist kein Punkt vorhanden, wird das gesamte " -"Feld :c:member:`~PyTypeObject.tp_name` als Attribut :attr:`~type.__name__` " -"zugänglich gemacht, und das Attribut :attr:`~type.__module__` ist " -"undefiniert (sofern es nicht wie oben beschrieben ausdrücklich im Dictionary " -"gesetzt wird). Das bedeutet, dass sich dein Typ nicht picklen lässt. " -"Außerdem wird er in Moduldokumentationen, die mit pydoc erzeugt werden, " -"nicht aufgeführt." - -#: ../../c-api/typeobj.rst:587 -msgid "" -"This field must not be ``NULL``. It is the only required field " -"in :c:func:`PyTypeObject` (other than " -"potentially :c:member:`~PyTypeObject.tp_itemsize`)." -msgstr "" -"Dieses Feld darf nicht ``NULL`` sein. Es ist das einzige erforderliche Feld " -"in :c:func:`PyTypeObject` (abgesehen möglicherweise " -"von :c:member:`~PyTypeObject.tp_itemsize`)." - -#: ../../c-api/typeobj.rst:599 -msgid "" -"These fields allow calculating the size in bytes of instances of the type." -msgstr "" -"Über diese Felder lässt sich die Größe von Instanzen des Typs in Bytes " -"berechnen." - -#: ../../c-api/typeobj.rst:601 -msgid "" -"See :c:macro:`Py_tp_basicsize`, :c:macro:`Py_tp_extra_basicsize` " -"and :c:macro:`Py_tp_itemsize` for the corresponding :c:member:`Slot IDs " -"`." -msgstr "" -"Die zugehörigen :c:member:`Slot-IDs ` stehen " -"unter :c:macro:`Py_tp_basicsize`, :c:macro:`Py_tp_extra_basicsize` " -"und :c:macro:`Py_tp_itemsize`." - -#: ../../c-api/typeobj.rst:605 -msgid "" -"There are two kinds of types: types with fixed-length instances have a " -"zero :c:member:`!tp_itemsize` field, types with variable-length instances " -"have a non-zero :c:member:`!tp_itemsize` field. For a type with fixed-" -"length instances, all instances have the same size, given in :c:member:`!" -"tp_basicsize`. (Exceptions to this rule can be made " -"using :c:func:`PyUnstable_Object_GC_NewWithExtraData`.)" -msgstr "" -"Es gibt zwei Arten von Typen: Typen mit Instanzen fester Länge haben ein " -"Feld :c:member:`!tp_itemsize` von null, Typen mit Instanzen veränderlicher " -"Länge ein Feld :c:member:`!tp_itemsize` ungleich null. Bei einem Typ mit " -"Instanzen fester Länge haben alle Instanzen dieselbe Größe, die " -"in :c:member:`!tp_basicsize` angegeben ist. (Ausnahmen von dieser Regel " -"lassen sich mit :c:func:`PyUnstable_Object_GC_NewWithExtraData` machen.)" - -#: ../../c-api/typeobj.rst:612 -msgid "" -"For a type with variable-length instances, the instances must have " -"an :c:member:`~PyVarObject.ob_size` field, and the instance size " -"is :c:member:`!tp_basicsize` plus N times :c:member:`!tp_itemsize`, where N " -"is the \"length\" of the object." -msgstr "" -"Bei einem Typ mit Instanzen veränderlicher Länge müssen die Instanzen ein " -"Feld :c:member:`~PyVarObject.ob_size` haben, und die Instanzgröße " -"ist :c:member:`!tp_basicsize` plus N mal :c:member:`!tp_itemsize`, wobei N " -"die „Länge“ des Objekts ist." - -#: ../../c-api/typeobj.rst:617 -msgid "" -"Functions like :c:func:`PyObject_NewVar` will take the value of N as an " -"argument, and store in the instance's :c:member:`~PyVarObject.ob_size` " -"field. Note that the :c:member:`~PyVarObject.ob_size` field may later be " -"used for other purposes. For example, :py:type:`int` instances use the bits " -"of :c:member:`~PyVarObject.ob_size` in an implementation-defined way; the " -"underlying storage and its size should be accessed " -"using :c:func:`PyLong_Export`." -msgstr "" -"Funktionen wie :c:func:`PyObject_NewVar` nehmen den Wert von N als Argument " -"und legen ihn im Feld :c:member:`~PyVarObject.ob_size` der Instanz ab. " -"Beachte, dass das Feld :c:member:`~PyVarObject.ob_size` später für andere " -"Zwecke verwendet werden kann. :py:type:`int`-Instanzen zum Beispiel nutzen " -"die Bits von :c:member:`~PyVarObject.ob_size` auf eine von der " -"Implementierung festgelegte Weise. Auf den zugrunde liegenden Speicher und " -"seine Größe sollte über :c:func:`PyLong_Export` zugegriffen werden." - -#: ../../c-api/typeobj.rst:627 -msgid "" -"The :c:member:`~PyVarObject.ob_size` field should be accessed using " -"the :c:func:`Py_SIZE()` and :c:func:`Py_SET_SIZE()` macros." -msgstr "" -"Auf das Feld :c:member:`~PyVarObject.ob_size` sollte über die " -"Makros :c:func:`Py_SIZE()` und :c:func:`Py_SET_SIZE()` zugegriffen werden." - -#: ../../c-api/typeobj.rst:630 -msgid "" -"Also, the presence of an :c:member:`~PyVarObject.ob_size` field in the " -"instance layout doesn't mean that the instance structure is variable-length. " -"For example, the :py:type:`list` type has fixed-length instances, yet those " -"instances have a :c:member:`~PyVarObject.ob_size` field. (As " -"with :py:type:`int`, avoid reading lists' :c:member:`!ob_size` directly. " -"Call :c:func:`PyList_Size` instead.)" -msgstr "" -"Umgekehrt bedeutet das Vorhandensein eines " -"Feldes :c:member:`~PyVarObject.ob_size` im Aufbau der Instanz nicht, dass " -"die Instanzstruktur veränderliche Länge hat. Der Typ :py:type:`list` zum " -"Beispiel hat Instanzen fester Länge, und diese Instanzen haben trotzdem ein " -"Feld :c:member:`~PyVarObject.ob_size`. (Wie bei :py:type:`int` solltest " -"du :c:member:`!ob_size` von Listen nicht unmittelbar auslesen. Rufe " -"stattdessen :c:func:`PyList_Size` auf.)" - -#: ../../c-api/typeobj.rst:637 -msgid "" -"The :c:member:`!tp_basicsize` includes size needed for data of the " -"type's :c:member:`~PyTypeObject.tp_base`, plus any extra data needed by each " -"instance." -msgstr "" -":c:member:`!tp_basicsize` schließt den Platz ein, der für die Daten " -"des :c:member:`~PyTypeObject.tp_base` des Typs nötig ist, zuzüglich aller " -"zusätzlichen Daten, die jede Instanz braucht." - -#: ../../c-api/typeobj.rst:641 -msgid "" -"The correct way to set :c:member:`!tp_basicsize` is to use the ``sizeof`` " -"operator on the struct used to declare the instance layout. This struct must " -"include the struct used to declare the base type. In other " -"words, :c:member:`!tp_basicsize` must be greater than or equal to the " -"base's :c:member:`!tp_basicsize`." -msgstr "" -"Der richtige Weg, :c:member:`!tp_basicsize` zu setzen, führt über den " -"``sizeof``-Operator auf der Struktur, mit der der Aufbau der Instanz " -"deklariert wird. Diese Struktur muss die Struktur einschließen, mit der der " -"Basistyp deklariert wird. Mit anderen Worten muss :c:member:`!tp_basicsize` " -"größer oder gleich dem :c:member:`!tp_basicsize` des Basistyps sein." - -#: ../../c-api/typeobj.rst:647 -msgid "" -"Since every type is a subtype of :py:type:`object`, this struct must " -"include :c:type:`PyObject` or :c:type:`PyVarObject` (depending on " -"whether :c:member:`~PyVarObject.ob_size` should be included). These are " -"usually defined by the macro :c:macro:`PyObject_HEAD` " -"or :c:macro:`PyObject_VAR_HEAD`, respectively." -msgstr "" -"Da jeder Typ ein Untertyp von :py:type:`object` ist, muss diese " -"Struktur :c:type:`PyObject` oder :c:type:`PyVarObject` einschließen (je " -"nachdem, ob :c:member:`~PyVarObject.ob_size` enthalten sein soll). " -"Üblicherweise werden diese über das Makro :c:macro:`PyObject_HEAD` " -"beziehungsweise :c:macro:`PyObject_VAR_HEAD` festgelegt." - -#: ../../c-api/typeobj.rst:653 -msgid "" -"The basic size does not include the GC header size, as that header is not " -"part of :c:macro:`PyObject_HEAD`." -msgstr "" -"Die Grundgröße schließt die Größe des GC-Kopfes nicht ein, weil dieser Kopf " -"nicht zu :c:macro:`PyObject_HEAD` gehört." - -#: ../../c-api/typeobj.rst:656 -msgid "" -"For cases where struct used to declare the base type is unknown, " -"see :c:member:`PyType_Spec.basicsize` and :c:func:`PyType_FromMetaclass`." -msgstr "" -"Für Fälle, in denen die Struktur zur Deklaration des Basistyps unbekannt " -"ist, siehe :c:member:`PyType_Spec.basicsize` " -"und :c:func:`PyType_FromMetaclass`." - -#: ../../c-api/typeobj.rst:659 -msgid "Notes about alignment:" -msgstr "Hinweise zur Ausrichtung:" - -#: ../../c-api/typeobj.rst:661 -msgid "" -":c:member:`!tp_basicsize` must be a multiple of ``_Alignof(PyObject)``. When " -"using ``sizeof`` on a ``struct`` that includes :c:macro:`PyObject_HEAD`, as " -"recommended, the compiler ensures this. When not using a C ``struct``, or " -"when using compiler extensions like ``__attribute__((packed))``, it is up to " -"you." -msgstr "" -":c:member:`!tp_basicsize` muss ein Vielfaches von ``_Alignof(PyObject)`` " -"sein. Verwendest du wie empfohlen ``sizeof`` auf einer ``struct``, " -"die :c:macro:`PyObject_HEAD` einschließt, sorgt der Compiler dafür. " -"Verwendest du keine C-``struct`` oder Compiler-Erweiterungen wie " -"``__attribute__((packed))``, liegt es an dir." - -#: ../../c-api/typeobj.rst:666 -msgid "" -"If the variable items require a particular alignment, :c:member:`!" -"tp_basicsize` and :c:member:`!tp_itemsize` must each be a multiple of that " -"alignment. For example, if a type's variable part stores a ``double``, it is " -"your responsibility that both fields are a multiple of ``_Alignof(double)``." -msgstr "" -"Erfordern die veränderlichen Elemente eine bestimmte Ausrichtung, " -"müssen :c:member:`!tp_basicsize` und :c:member:`!tp_itemsize` jeweils ein " -"Vielfaches dieser Ausrichtung sein. Speichert der veränderliche Teil eines " -"Typs zum Beispiel ein ``double``, liegt es in deiner Verantwortung, dass " -"beide Felder ein Vielfaches von ``_Alignof(double)`` sind." - -#: ../../c-api/typeobj.rst:675 -msgid "" -"These fields are inherited separately by subtypes. (That is, if the field is " -"set to zero, :c:func:`PyType_Ready` will copy the value from the base type, " -"indicating that the instances do not need additional storage.)" -msgstr "" -"Diese Felder werden von Untertypen einzeln vererbt. (Das heißt: Ist das Feld " -"auf null gesetzt, kopiert :c:func:`PyType_Ready` den Wert aus dem Basistyp, " -"was anzeigt, dass die Instanzen keinen zusätzlichen Speicher brauchen.)" - -#: ../../c-api/typeobj.rst:680 -msgid "" -"If the base type has a non-zero :c:member:`~PyTypeObject.tp_itemsize`, it is " -"generally not safe to set :c:member:`~PyTypeObject.tp_itemsize` to a " -"different non-zero value in a subtype (though this depends on the " -"implementation of the base type)." -msgstr "" -"Hat der Basistyp ein :c:member:`~PyTypeObject.tp_itemsize` ungleich null, " -"ist es im Allgemeinen nicht gefahrlos " -"möglich, :c:member:`~PyTypeObject.tp_itemsize` in einem Untertyp auf einen " -"anderen Wert ungleich null zu setzen (das hängt allerdings von der Umsetzung " -"des Basistyps ab)." - -#: ../../c-api/typeobj.rst:689 -msgid "" -"A pointer to the instance destructor function. The function signature is::" -msgstr "" -"Ein Zeiger auf die Destruktorfunktion der Instanz. Die Signatur der Funktion " -"lautet::" - -#: ../../c-api/typeobj.rst:691 -msgid "void tp_dealloc(PyObject *self);" -msgstr "void tp_dealloc(PyObject *self);" - -#: ../../c-api/typeobj.rst:693 -msgid "" -"The destructor function should remove all references which the instance owns " -"(e.g., call :c:func:`Py_CLEAR`), free all memory buffers owned by the " -"instance, and call the type's :c:member:`~PyTypeObject.tp_free` function to " -"free the object itself." -msgstr "" -"Die Destruktorfunktion sollte alle Referenzen entfernen, die die Instanz " -"besitzt (also zum Beispiel :c:func:`Py_CLEAR` aufrufen), alle Speicherpuffer " -"freigeben, die der Instanz gehören, und die " -"Funktion :c:member:`~PyTypeObject.tp_free` des Typs aufrufen, um das Objekt " -"selbst freizugeben." - -#: ../../c-api/typeobj.rst:698 -msgid "" -"If you may call functions that may set the error indicator, you must " -"use :c:func:`PyErr_GetRaisedException` " -"and :c:func:`PyErr_SetRaisedException` to ensure you don't clobber a " -"preexisting error indicator (the deallocation could have occurred while " -"processing a different error):" -msgstr "" -"Rufst du möglicherweise Funktionen auf, die den Fehlerindikator setzen " -"können, musst du :c:func:`PyErr_GetRaisedException` " -"und :c:func:`PyErr_SetRaisedException` verwenden, damit du einen bereits " -"vorhandenen Fehlerindikator nicht überschreibst (die Freigabe könnte während " -"der Behandlung eines anderen Fehlers erfolgt sein):" - -#: ../../c-api/typeobj.rst:703 -msgid "" -"static void\n" -"foo_dealloc(foo_object *self)\n" -"{\n" -" PyObject *et, *ev, *etb;\n" -" PyObject *exc = PyErr_GetRaisedException();\n" -" ...\n" -" PyErr_SetRaisedException(exc);\n" -"}" -msgstr "" -"static void\n" -"foo_dealloc(foo_object *self)\n" -"{\n" -" PyObject *et, *ev, *etb;\n" -" PyObject *exc = PyErr_GetRaisedException();\n" -" ...\n" -" PyErr_SetRaisedException(exc);\n" -"}" - -#: ../../c-api/typeobj.rst:714 -msgid "" -"The dealloc handler itself must not raise an exception; if it hits an error " -"case it should call :c:func:`PyErr_FormatUnraisable` to log (and clear) an " -"unraisable exception." -msgstr "" -"Der Dealloc-Handler selbst darf keine Ausnahme auslösen. Stößt er auf einen " -"Fehlerfall, sollte er :c:func:`PyErr_FormatUnraisable` aufrufen, um eine " -"nicht auslösbare Ausnahme zu protokollieren (und zu löschen)." - -#: ../../c-api/typeobj.rst:718 -msgid "No guarantees are made about when an object is destroyed, except:" -msgstr "" -"Darüber, wann ein Objekt zerstört wird, werden keine Zusagen gemacht, außer:" - -#: ../../c-api/typeobj.rst:720 -msgid "" -"Python will destroy an object immediately or some time after the final " -"reference to the object is deleted, unless its finalizer " -"(:c:member:`~PyTypeObject.tp_finalize`) subsequently resurrects the object." -msgstr "" -"Python zerstört ein Objekt sofort oder einige Zeit, nachdem die letzte " -"Referenz darauf gelöscht wurde, sofern nicht sein Finalisierer " -"(:c:member:`~PyTypeObject.tp_finalize`) das Objekt anschließend wieder " -"auferstehen lässt." - -#: ../../c-api/typeobj.rst:724 -msgid "" -"An object will not be destroyed while it is being automatically finalized " -"(:c:member:`~PyTypeObject.tp_finalize`) or automatically cleared " -"(:c:member:`~PyTypeObject.tp_clear`)." -msgstr "" -"Ein Objekt wird nicht zerstört, während es automatisch finalisiert " -"(:c:member:`~PyTypeObject.tp_finalize`) oder automatisch geleert wird " -"(:c:member:`~PyTypeObject.tp_clear`)." - -#: ../../c-api/typeobj.rst:728 -msgid "" -"CPython currently destroys an object immediately from :c:func:`Py_DECREF` " -"when the new reference count is zero, but this may change in a future " -"version." -msgstr "" -"CPython zerstört ein Objekt derzeit unmittelbar aus :c:func:`Py_DECREF` " -"heraus, sobald der neue Referenzzähler null ist. Das kann sich in einer " -"künftigen Version ändern." - -#: ../../c-api/typeobj.rst:732 -msgid "" -"It is recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " -"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " -"finalized before destruction." -msgstr "" -"Es wird empfohlen, am Anfang von :c:member:`!" -"tp_dealloc` :c:func:`PyObject_CallFinalizerFromDealloc` aufzurufen, damit " -"das Objekt vor der Zerstörung in jedem Fall finalisiert ist." - -#: ../../c-api/typeobj.rst:736 -msgid "" -"If the type supports garbage collection (the :c:macro:`Py_TPFLAGS_HAVE_GC` " -"flag is set), the destructor should call :c:func:`PyObject_GC_UnTrack` " -"before clearing any member fields." -msgstr "" -"Unterstützt der Typ die Speicherbereinigung (das " -"Flag :c:macro:`Py_TPFLAGS_HAVE_GC` ist gesetzt), sollte der " -"Destruktor :c:func:`PyObject_GC_UnTrack` aufrufen, bevor er Member-Felder " -"leert." - -#: ../../c-api/typeobj.rst:740 -msgid "" -"It is permissible to call :c:member:`~PyTypeObject.tp_clear` " -"from :c:member:`!tp_dealloc` to reduce code duplication and to guarantee " -"that the object is always cleared before destruction. Beware " -"that :c:member:`!tp_clear` might have already been called." -msgstr "" -"Es ist zulässig, :c:member:`~PyTypeObject.tp_clear` aus :c:member:`!" -"tp_dealloc` heraus aufzurufen, um doppelten Code zu vermeiden und " -"sicherzustellen, dass das Objekt vor der Zerstörung immer geleert ist. Sei " -"dir bewusst, dass :c:member:`!tp_clear` bereits aufgerufen worden sein kann." - -#: ../../c-api/typeobj.rst:745 -msgid "" -"If the type is heap allocated (:c:macro:`Py_TPFLAGS_HEAPTYPE`), the " -"deallocator should release the owned reference to its type object " -"(via :c:func:`Py_DECREF`) after calling the type deallocator. See the " -"example code below.::" -msgstr "" -"Ist der Typ auf dem Heap angelegt (:c:macro:`Py_TPFLAGS_HEAPTYPE`), sollte " -"der Deallokator die gehaltene Referenz auf sein Typobjekt freigeben " -"(über :c:func:`Py_DECREF`), nachdem er den Deallokator des Typs aufgerufen " -"hat. Siehe den Beispielcode unten.::" - -#: ../../c-api/typeobj.rst:750 -msgid "" -"static void\n" -"foo_dealloc(PyObject *op)\n" -"{\n" -" foo_object *self = (foo_object *) op;\n" -" PyObject_GC_UnTrack(self);\n" -" Py_CLEAR(self->ref);\n" -" Py_TYPE(self)->tp_free(self);\n" -"}" -msgstr "" -"static void\n" -"foo_dealloc(PyObject *op)\n" -"{\n" -" foo_object *self = (foo_object *) op;\n" -" PyObject_GC_UnTrack(self);\n" -" Py_CLEAR(self->ref);\n" -" Py_TYPE(self)->tp_free(self);\n" -"}" - -#: ../../c-api/typeobj.rst:759 -msgid "" -":c:member:`!tp_dealloc` must leave the exception status unchanged. If it " -"needs to call something that might raise an exception, the exception state " -"must be backed up first and restored later (after logging any exceptions " -"with :c:func:`PyErr_WriteUnraisable`)." -msgstr "" -":c:member:`!tp_dealloc` muss den Ausnahmezustand unverändert lassen. Muss es " -"etwas aufrufen, das eine Ausnahme auslösen könnte, ist der Ausnahmezustand " -"zuerst zu sichern und später wiederherzustellen (nachdem etwaige Ausnahmen " -"mit :c:func:`PyErr_WriteUnraisable` protokolliert wurden)." - -#: ../../c-api/typeobj.rst:764 -msgid "Example::" -msgstr "Beispiel::" - -#: ../../c-api/typeobj.rst:766 -msgid "" -"static void\n" -"foo_dealloc(PyObject *self)\n" -"{\n" -" PyObject *exc = PyErr_GetRaisedException();\n" -"\n" -" if (PyObject_CallFinalizerFromDealloc(self) < 0) {\n" -" // self was resurrected.\n" -" goto done;\n" -" }\n" -"\n" -" PyTypeObject *tp = Py_TYPE(self);\n" -"\n" -" if (tp->tp_flags & Py_TPFLAGS_HAVE_GC) {\n" -" PyObject_GC_UnTrack(self);\n" -" }\n" -"\n" -" // Optional, but convenient to avoid code duplication.\n" -" if (tp->tp_clear && tp->tp_clear(self) < 0) {\n" -" PyErr_WriteUnraisable(self);\n" -" }\n" -"\n" -" // Any additional destruction goes here.\n" -"\n" -" tp->tp_free(self);\n" -" self = NULL; // In case PyErr_WriteUnraisable() is called below.\n" -"\n" -" if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" -" Py_CLEAR(tp);\n" -" }\n" -"\n" -"done:\n" -" // Optional, if something was called that might have raised an\n" -" // exception.\n" -" if (PyErr_Occurred()) {\n" -" PyErr_WriteUnraisable(self);\n" -" }\n" -" PyErr_SetRaisedException(exc);\n" -"}" -msgstr "" -"static void\n" -"foo_dealloc(PyObject *self)\n" -"{\n" -" PyObject *exc = PyErr_GetRaisedException();\n" -"\n" -" if (PyObject_CallFinalizerFromDealloc(self) < 0) {\n" -" // self was resurrected.\n" -" goto done;\n" -" }\n" -"\n" -" PyTypeObject *tp = Py_TYPE(self);\n" -"\n" -" if (tp->tp_flags & Py_TPFLAGS_HAVE_GC) {\n" -" PyObject_GC_UnTrack(self);\n" -" }\n" -"\n" -" // Optional, but convenient to avoid code duplication.\n" -" if (tp->tp_clear && tp->tp_clear(self) < 0) {\n" -" PyErr_WriteUnraisable(self);\n" -" }\n" -"\n" -" // Any additional destruction goes here.\n" -"\n" -" tp->tp_free(self);\n" -" self = NULL; // In case PyErr_WriteUnraisable() is called below.\n" -"\n" -" if (tp->tp_flags & Py_TPFLAGS_HEAPTYPE) {\n" -" Py_CLEAR(tp);\n" -" }\n" -"\n" -"done:\n" -" // Optional, if something was called that might have raised an\n" -" // exception.\n" -" if (PyErr_Occurred()) {\n" -" PyErr_WriteUnraisable(self);\n" -" }\n" -" PyErr_SetRaisedException(exc);\n" -"}" - -#: ../../c-api/typeobj.rst:805 -msgid "" -":c:member:`!tp_dealloc` may be called from any Python thread, not just the " -"thread which created the object (if the object becomes part of a refcount " -"cycle, that cycle might be collected by a garbage collection on any " -"thread). This is not a problem for Python API calls, since the thread on " -"which :c:member:`!tp_dealloc` is called with an :term:`attached thread " -"state`. However, if the object being destroyed in turn destroys objects " -"from some other C library, care should be taken to ensure that destroying " -"those objects on the thread which called :c:member:`!tp_dealloc` will not " -"violate any assumptions of the library." -msgstr "" -":c:member:`!tp_dealloc` darf aus jedem Python-Thread aufgerufen werden, " -"nicht nur aus dem, der das Objekt erzeugt hat (wird das Objekt Teil eines " -"Referenzzyklus, kann dieser Zyklus von einer Speicherbereinigung in einem " -"beliebigen Thread eingesammelt werden). Für Aufrufe der Python-API ist das " -"kein Problem, denn der Thread, auf dem :c:member:`!tp_dealloc` aufgerufen " -"wird, hat einen :term:`angehängten Thread-Zustand `. " -"Zerstört das zu zerstörende Objekt seinerseits Objekte aus einer anderen C-" -"Bibliothek, ist allerdings darauf zu achten, dass das Zerstören dieser " -"Objekte auf dem Thread, der :c:member:`!tp_dealloc` aufgerufen hat, keine " -"Annahmen dieser Bibliothek verletzt." - -#: ../../c-api/typeobj.rst:823 ../../c-api/typeobj.rst:1740 -#: ../../c-api/typeobj.rst:2503 -msgid "" -":ref:`life-cycle` for details about how this slot relates to other slots." -msgstr "" -":ref:`life-cycle` -- Einzelheiten dazu, wie dieser Slot mit den anderen " -"Slots zusammenhängt." - -#: ../../c-api/typeobj.rst:828 -msgid "" -"An optional offset to a per-instance function that implements calling the " -"object using the :ref:`vectorcall protocol `, a more efficient " -"alternative of the simpler :c:member:`~PyTypeObject.tp_call`." -msgstr "" -"Ein wahlfreier Versatz zu einer Funktion je Instanz, die das Aufrufen des " -"Objekts über das :ref:`vectorcall-Protokoll ` umsetzt -- eine " -"wirksamere Alternative zum einfacheren :c:member:`~PyTypeObject.tp_call`." - -#: ../../c-api/typeobj.rst:833 -msgid "" -"This field is only used if the flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` is " -"set. If so, this must be a positive integer containing the offset in the " -"instance of a :c:type:`vectorcallfunc` pointer." -msgstr "" -"Dieses Feld wird nur verwendet, wenn das " -"Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` gesetzt ist. Ist es das, muss " -"dies eine positive ganze Zahl sein, die den Versatz " -"eines :c:type:`vectorcallfunc`-Zeigers in der Instanz enthält." - -#: ../../c-api/typeobj.rst:837 -msgid "" -"The *vectorcallfunc* pointer may be ``NULL``, in which case the instance " -"behaves as if :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the " -"instance falls back to :c:member:`~PyTypeObject.tp_call`." -msgstr "" -"Der *vectorcallfunc*-Zeiger darf ``NULL`` sein. Die Instanz verhält sich " -"dann so, als wäre :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` nicht gesetzt: Das " -"Aufrufen der Instanz fällt auf :c:member:`~PyTypeObject.tp_call` zurück." - -#: ../../c-api/typeobj.rst:841 -msgid "" -"Any class that sets ``Py_TPFLAGS_HAVE_VECTORCALL`` must also " -"set :c:member:`~PyTypeObject.tp_call` and make sure its behaviour is " -"consistent with the *vectorcallfunc* function. This can be done by setting " -"*tp_call* to :c:func:`PyVectorcall_Call`." -msgstr "" -"Jede Klasse, die ``Py_TPFLAGS_HAVE_VECTORCALL`` setzt, muss " -"auch :c:member:`~PyTypeObject.tp_call` setzen und dafür sorgen, dass dessen " -"Verhalten zur *vectorcallfunc*-Funktion passt. Das lässt sich erreichen, " -"indem *tp_call* auf :c:func:`PyVectorcall_Call` gesetzt wird." - -#: ../../c-api/typeobj.rst:848 -msgid "" -"Before version 3.8, this slot was named ``tp_print``. In Python 2.x, it was " -"used for printing to a file. In Python 3.0 to 3.7, it was unused." -msgstr "" -"Vor Version 3.8 hieß dieser Slot ``tp_print``. In Python 2.x diente er der " -"Ausgabe in eine Datei. In Python 3.0 bis 3.7 war er unbenutzt." - -#: ../../c-api/typeobj.rst:854 -msgid "" -"Before version 3.12, it was not recommended for :ref:`mutable heap types " -"` to implement the vectorcall protocol. When a user " -"sets :attr:`~object.__call__` in Python code, only *tp_call* is updated, " -"likely making it inconsistent with the vectorcall function. Since 3.12, " -"setting ``__call__`` will disable vectorcall optimization by clearing " -"the :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag." -msgstr "" -"Vor Version 3.12 war es nicht empfohlen, dass :ref:`veränderliche Heap-Typen " -"` das vectorcall-Protokoll umsetzen. Setzt " -"jemand :attr:`~object.__call__` in Python-Code, wird nur *tp_call* " -"aktualisiert, womit es wahrscheinlich nicht mehr zur vectorcall-Funktion " -"passt. Seit 3.12 schaltet das Setzen von ``__call__`` die vectorcall-" -"Optimierung ab, indem es das Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` " -"löscht." - -#: ../../c-api/typeobj.rst:864 -msgid "" -"This field is always inherited. However, " -"the :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag is not always inherited. If " -"it's not set, then the subclass won't use :ref:`vectorcall `, " -"except when :c:func:`PyVectorcall_Call` is explicitly called." -msgstr "" -"Dieses Feld wird immer vererbt. Das " -"Flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` wird allerdings nicht immer " -"vererbt. Ist es nicht gesetzt, verwendet die Unterklasse :ref:`vectorcall " -"` nicht, außer wenn :c:func:`PyVectorcall_Call` ausdrücklich " -"aufgerufen wird." - -#: ../../c-api/typeobj.rst:875 -msgid "An optional pointer to the get-attribute-string function." -msgstr "" -"Ein wahlfreier Zeiger auf die Funktion zum Lesen eines Attributs über eine " -"Zeichenkette." - -#: ../../c-api/typeobj.rst:877 -msgid "" -"This field is deprecated. When it is defined, it should point to a function " -"that acts the same as the :c:member:`~PyTypeObject.tp_getattro` function, " -"but taking a C string instead of a Python string object to give the " -"attribute name." -msgstr "" -"Dieses Feld ist veraltet. Ist es festgelegt, sollte es auf eine Funktion " -"zeigen, die sich genauso verhält wie die " -"Funktion :c:member:`~PyTypeObject.tp_getattro`, aber eine C-Zeichenkette " -"statt eines Python-Zeichenkettenobjekts für den Attributnamen nimmt." - -#: ../../c-api/typeobj.rst:883 ../../c-api/typeobj.rst:1091 -msgid "Group: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject.tp_getattro`" -msgstr "Gruppe: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject.tp_getattro`" - -#: ../../c-api/typeobj.rst:885 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_getattro`: a subtype inherits " -"both :c:member:`~PyTypeObject.tp_getattr` " -"and :c:member:`~PyTypeObject.tp_getattro` from its base type when the " -"subtype's :c:member:`~PyTypeObject.tp_getattr` " -"and :c:member:`~PyTypeObject.tp_getattro` are both ``NULL``." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_getattro` vererbt: Ein Untertyp erbt " -"sowohl :c:member:`~PyTypeObject.tp_getattr` als " -"auch :c:member:`~PyTypeObject.tp_getattro` von seinem Basistyp, " -"wenn :c:member:`~PyTypeObject.tp_getattr` " -"und :c:member:`~PyTypeObject.tp_getattro` des Untertyps beide ``NULL`` sind." - -#: ../../c-api/typeobj.rst:894 ../../c-api/typeobj.rst:1106 -msgid "" -"An optional pointer to the function for setting and deleting attributes." -msgstr "" -"Ein wahlfreier Zeiger auf die Funktion zum Setzen und Löschen von Attributen." - -#: ../../c-api/typeobj.rst:896 -msgid "" -"This field is deprecated. When it is defined, it should point to a function " -"that acts the same as the :c:member:`~PyTypeObject.tp_setattro` function, " -"but taking a C string instead of a Python string object to give the " -"attribute name." -msgstr "" -"Dieses Feld ist veraltet. Ist es festgelegt, sollte es auf eine Funktion " -"zeigen, die sich genauso verhält wie die " -"Funktion :c:member:`~PyTypeObject.tp_setattro`, aber eine C-Zeichenkette " -"statt eines Python-Zeichenkettenobjekts für den Attributnamen nimmt." - -#: ../../c-api/typeobj.rst:902 ../../c-api/typeobj.rst:1119 -msgid "Group: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject.tp_setattro`" -msgstr "Gruppe: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject.tp_setattro`" - -#: ../../c-api/typeobj.rst:904 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_setattro`: a subtype inherits " -"both :c:member:`~PyTypeObject.tp_setattr` " -"and :c:member:`~PyTypeObject.tp_setattro` from its base type when the " -"subtype's :c:member:`~PyTypeObject.tp_setattr` " -"and :c:member:`~PyTypeObject.tp_setattro` are both ``NULL``." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_setattro` vererbt: Ein Untertyp erbt " -"sowohl :c:member:`~PyTypeObject.tp_setattr` als " -"auch :c:member:`~PyTypeObject.tp_setattro` von seinem Basistyp, " -"wenn :c:member:`~PyTypeObject.tp_setattr` " -"und :c:member:`~PyTypeObject.tp_setattro` des Untertyps beide ``NULL`` sind." - -#: ../../c-api/typeobj.rst:911 -msgid "" -"Pointer to an additional structure that contains fields relevant only to " -"objects which implement :term:`awaitable` and :term:`asynchronous iterator` " -"protocols at the C-level. See :ref:`async-structs` for details." -msgstr "" -"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " -"Bedeutung sind, die die Protokolle :term:`abwartbar ` " -"und :term:`asynchroner Iterator ` auf C-Ebene " -"umsetzen. Einzelheiten stehen unter :ref:`async-structs`." - -#: ../../c-api/typeobj.rst:915 -msgid "Formerly known as ``tp_compare`` and ``tp_reserved``." -msgstr "Früher bekannt als ``tp_compare`` und ``tp_reserved``." - -#: ../../c-api/typeobj.rst:920 -msgid "" -"The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the " -"contained fields are inherited individually." -msgstr "" -"Das Feld :c:member:`~PyTypeObject.tp_as_async` wird nicht vererbt, die " -"enthaltenen Felder werden aber einzeln vererbt." - -#: ../../c-api/typeobj.rst:930 -msgid "" -"An optional pointer to a function that implements the built-in " -"function :func:`repr`." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion, die die integrierte " -"Funktion :func:`repr` umsetzt." - -#: ../../c-api/typeobj.rst:933 -msgid "The signature is the same as for :c:func:`PyObject_Repr`::" -msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Repr`::" - -#: ../../c-api/typeobj.rst:935 -msgid "PyObject *tp_repr(PyObject *self);" -msgstr "PyObject *tp_repr(PyObject *self);" - -#: ../../c-api/typeobj.rst:937 -msgid "" -"The function must return a string or a Unicode object. Ideally, this " -"function should return a string that, when passed to :func:`eval`, given a " -"suitable environment, returns an object with the same value. If this is not " -"feasible, it should return a string starting with ``'<'`` and ending with " -"``'>'`` from which both the type and the value of the object can be deduced." -msgstr "" -"Die Funktion muss eine Zeichenkette oder ein Unicode-Objekt zurückgeben. Im " -"Idealfall sollte sie eine Zeichenkette zurückgeben, die -- an :func:`eval` " -"übergeben und in einer passenden Umgebung -- ein Objekt mit demselben Wert " -"ergibt. Ist das nicht machbar, sollte sie eine Zeichenkette zurückgeben, die " -"mit ``'<'`` beginnt und mit ``'>'`` endet und aus der sich sowohl der Typ " -"als auch der Wert des Objekts ableiten lassen." - -#: ../../c-api/typeobj.rst:948 ../../c-api/typeobj.rst:1029 -#: ../../c-api/typeobj.rst:1070 ../../c-api/typeobj.rst:1097 -#: ../../c-api/typeobj.rst:1125 ../../c-api/typeobj.rst:1170 -#: ../../c-api/typeobj.rst:1805 ../../c-api/typeobj.rst:1839 -#: ../../c-api/typeobj.rst:1969 ../../c-api/typeobj.rst:2002 -#: ../../c-api/typeobj.rst:2081 ../../c-api/typeobj.rst:2124 -#: ../../c-api/typeobj.rst:2146 ../../c-api/typeobj.rst:2187 -#: ../../c-api/typeobj.rst:2217 ../../c-api/typeobj.rst:2250 -msgid "**Default:**" -msgstr "**Vorgabe:**" - -#: ../../c-api/typeobj.rst:950 -msgid "" -"When this field is not set, a string of the form ``<%s object at %p>`` is " -"returned, where ``%s`` is replaced by the type name, and ``%p`` by the " -"object's memory address." -msgstr "" -"Ist dieses Feld nicht gesetzt, wird eine Zeichenkette der Form ``<%s object " -"at %p>`` zurückgegeben, wobei ``%s`` durch den Typnamen und ``%p`` durch die " -"Speicheradresse des Objekts ersetzt wird." - -#: ../../c-api/typeobj.rst:957 -msgid "" -"Pointer to an additional structure that contains fields relevant only to " -"objects which implement the number protocol. These fields are documented " -"in :ref:`number-structs`." -msgstr "" -"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " -"Bedeutung sind, die das Zahlenprotokoll umsetzen. Diese Felder sind " -"unter :ref:`number-structs` dokumentiert." - -#: ../../c-api/typeobj.rst:963 -msgid "" -"The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the " -"contained fields are inherited individually." -msgstr "" -"Das Feld :c:member:`~PyTypeObject.tp_as_number` wird nicht vererbt, die " -"enthaltenen Felder werden aber einzeln vererbt." - -#: ../../c-api/typeobj.rst:969 -msgid "" -"Pointer to an additional structure that contains fields relevant only to " -"objects which implement the sequence protocol. These fields are documented " -"in :ref:`sequence-structs`." -msgstr "" -"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " -"Bedeutung sind, die das Sequenzprotokoll umsetzen. Diese Felder sind " -"unter :ref:`sequence-structs` dokumentiert." - -#: ../../c-api/typeobj.rst:975 -msgid "" -"The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the " -"contained fields are inherited individually." -msgstr "" -"Das Feld :c:member:`~PyTypeObject.tp_as_sequence` wird nicht vererbt, die " -"enthaltenen Felder werden aber einzeln vererbt." - -#: ../../c-api/typeobj.rst:981 -msgid "" -"Pointer to an additional structure that contains fields relevant only to " -"objects which implement the mapping protocol. These fields are documented " -"in :ref:`mapping-structs`." -msgstr "" -"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " -"Bedeutung sind, die das Mapping-Protokoll umsetzen. Diese Felder sind " -"unter :ref:`mapping-structs` dokumentiert." - -#: ../../c-api/typeobj.rst:987 -msgid "" -"The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the " -"contained fields are inherited individually." -msgstr "" -"Das Feld :c:member:`~PyTypeObject.tp_as_mapping` wird nicht vererbt, die " -"enthaltenen Felder werden aber einzeln vererbt." - -#: ../../c-api/typeobj.rst:997 -msgid "" -"An optional pointer to a function that implements the built-in " -"function :func:`hash`." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion, die die integrierte " -"Funktion :func:`hash` umsetzt." - -#: ../../c-api/typeobj.rst:1000 -msgid "The signature is the same as for :c:func:`PyObject_Hash`::" -msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Hash`::" - -#: ../../c-api/typeobj.rst:1002 -msgid "Py_hash_t tp_hash(PyObject *);" -msgstr "Py_hash_t tp_hash(PyObject *);" - -#: ../../c-api/typeobj.rst:1004 -msgid "" -"The value ``-1`` should not be returned as a normal return value; when an " -"error occurs during the computation of the hash value, the function should " -"set an exception and return ``-1``." -msgstr "" -"Der Wert ``-1`` sollte nicht als gewöhnlicher Rückgabewert verwendet werden. " -"Tritt bei der Berechnung des Hash-Werts ein Fehler auf, sollte die Funktion " -"eine Ausnahme setzen und ``-1`` zurückgeben." - -#: ../../c-api/typeobj.rst:1008 -msgid "" -"When this field is not set (*and* :c:member:`~PyTypeObject.tp_richcompare` " -"is not set), an attempt to take the hash of the object " -"raises :exc:`TypeError`. This is the same as setting it " -"to :c:func:`PyObject_HashNotImplemented`." -msgstr "" -"Ist dieses Feld nicht gesetzt " -"(*und* :c:member:`~PyTypeObject.tp_richcompare` ebenfalls nicht), löst der " -"Versuch, den Hash des Objekts zu bilden, ein :exc:`TypeError` aus. Das " -"entspricht dem Setzen auf :c:func:`PyObject_HashNotImplemented`." - -#: ../../c-api/typeobj.rst:1012 -msgid "" -"This field can be set explicitly to :c:func:`PyObject_HashNotImplemented` to " -"block inheritance of the hash method from a parent type. This is interpreted " -"as the equivalent of ``__hash__ = None`` at the Python level, causing " -"``isinstance(o, collections.Hashable)`` to correctly return ``False``. Note " -"that the converse is also true - setting ``__hash__ = None`` on a class at " -"the Python level will result in the ``tp_hash`` slot being set " -"to :c:func:`PyObject_HashNotImplemented`." -msgstr "" -"Dieses Feld lässt sich ausdrücklich " -"auf :c:func:`PyObject_HashNotImplemented` setzen, um das Erben der hash-" -"Methode von einem übergeordneten Typ zu unterbinden. Das wird als " -"Entsprechung zu ``__hash__ = None`` auf Python-Ebene ausgelegt und führt " -"dazu, dass ``isinstance(o, collections.Hashable)`` richtigerweise ``False`` " -"zurückgibt. Beachte, dass auch die Umkehrung gilt: ``__hash__ = None`` auf " -"Python-Ebene an einer Klasse zu setzen führt dazu, dass der Slot ``tp_hash`` " -"auf :c:func:`PyObject_HashNotImplemented` gesetzt wird." - -#: ../../c-api/typeobj.rst:1022 ../../c-api/typeobj.rst:1798 -msgid "Group: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject.tp_richcompare`" -msgstr "Gruppe: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject.tp_richcompare`" - -#: ../../c-api/typeobj.rst:1024 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_richcompare`: a subtype inherits both " -"of :c:member:`~PyTypeObject.tp_richcompare` " -"and :c:member:`~PyTypeObject.tp_hash`, when the " -"subtype's :c:member:`~PyTypeObject.tp_richcompare` " -"and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_richcompare` vererbt: Ein Untertyp erbt " -"sowohl :c:member:`~PyTypeObject.tp_richcompare` als " -"auch :c:member:`~PyTypeObject.tp_hash`, " -"wenn :c:member:`~PyTypeObject.tp_richcompare` " -"und :c:member:`~PyTypeObject.tp_hash` des Untertyps beide ``NULL`` sind." - -#: ../../c-api/typeobj.rst:1031 -msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericHash`." -msgstr ":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericHash`." - -#: ../../c-api/typeobj.rst:1038 -msgid "" -"An optional pointer to a function that implements calling the object. This " -"should be ``NULL`` if the object is not callable. The signature is the same " -"as for :c:func:`PyObject_Call`::" -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion, die das Aufrufen des Objekts " -"umsetzt. Ist das Objekt nicht aufrufbar, sollte dies ``NULL`` sein. Die " -"Signatur ist dieselbe wie bei :c:func:`PyObject_Call`::" - -#: ../../c-api/typeobj.rst:1042 -msgid "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" -msgstr "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);" - -#: ../../c-api/typeobj.rst:1053 -msgid "" -"An optional pointer to a function that implements the built-in " -"operation :func:`str`. (Note that :class:`str` is a type now, " -"and :func:`str` calls the constructor for that type. This constructor " -"calls :c:func:`PyObject_Str` to do the actual work, " -"and :c:func:`PyObject_Str` will call this handler.)" -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion, die den integrierten " -"Vorgang :func:`str` umsetzt. (Beachte, dass :class:`str` inzwischen ein Typ " -"ist und :func:`str` den Konstruktor dieses Typs aufruft. Dieser Konstruktor " -"ruft :c:func:`PyObject_Str` auf, um die eigentliche Arbeit zu erledigen, " -"und :c:func:`PyObject_Str` ruft diesen Handler auf.)" - -#: ../../c-api/typeobj.rst:1058 -msgid "The signature is the same as for :c:func:`PyObject_Str`::" -msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_Str`::" - -#: ../../c-api/typeobj.rst:1060 -msgid "PyObject *tp_str(PyObject *self);" -msgstr "PyObject *tp_str(PyObject *self);" - -#: ../../c-api/typeobj.rst:1062 -msgid "" -"The function must return a string or a Unicode object. It should be a " -"\"friendly\" string representation of the object, as this is the " -"representation that will be used, among other things, by the :func:`print` " -"function." -msgstr "" -"Die Funktion muss eine Zeichenkette oder ein Unicode-Objekt zurückgeben. Sie " -"sollte eine „freundliche“ Textdarstellung des Objekts sein, denn das ist die " -"Darstellung, die unter anderem die Funktion :func:`print` verwendet." - -#: ../../c-api/typeobj.rst:1072 -msgid "" -"When this field is not set, :c:func:`PyObject_Repr` is called to return a " -"string representation." -msgstr "" -"Ist dieses Feld nicht gesetzt, wird :c:func:`PyObject_Repr` aufgerufen, um " -"eine Textdarstellung zurückzugeben." - -#: ../../c-api/typeobj.rst:1080 -msgid "An optional pointer to the get-attribute function." -msgstr "Ein wahlfreier Zeiger auf die Funktion zum Lesen eines Attributs." - -#: ../../c-api/typeobj.rst:1082 -msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::" -msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_GetAttr`::" - -#: ../../c-api/typeobj.rst:1084 -msgid "PyObject *tp_getattro(PyObject *self, PyObject *attr);" -msgstr "PyObject *tp_getattro(PyObject *self, PyObject *attr);" - -#: ../../c-api/typeobj.rst:1086 -msgid "" -"It is usually convenient to set this field " -"to :c:func:`PyObject_GenericGetAttr`, which implements the normal way of " -"looking for object attributes." -msgstr "" -"Üblicherweise ist es praktisch, dieses Feld " -"auf :c:func:`PyObject_GenericGetAttr` zu setzen, was die gewöhnliche Art " -"umsetzt, Objektattribute nachzuschlagen." - -#: ../../c-api/typeobj.rst:1093 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_getattr`: a subtype inherits " -"both :c:member:`~PyTypeObject.tp_getattr` " -"and :c:member:`~PyTypeObject.tp_getattro` from its base type when the " -"subtype's :c:member:`~PyTypeObject.tp_getattr` " -"and :c:member:`~PyTypeObject.tp_getattro` are both ``NULL``." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_getattr` vererbt: Ein Untertyp erbt " -"sowohl :c:member:`~PyTypeObject.tp_getattr` als " -"auch :c:member:`~PyTypeObject.tp_getattro` von seinem Basistyp, " -"wenn :c:member:`~PyTypeObject.tp_getattr` " -"und :c:member:`~PyTypeObject.tp_getattro` des Untertyps beide ``NULL`` sind." - -#: ../../c-api/typeobj.rst:1099 -msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`." -msgstr "" -":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericGetAttr`." - -#: ../../c-api/typeobj.rst:1108 -msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::" -msgstr "Die Signatur ist dieselbe wie bei :c:func:`PyObject_SetAttr`::" - -#: ../../c-api/typeobj.rst:1110 -msgid "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" -msgstr "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);" - -#: ../../c-api/typeobj.rst:1112 -msgid "" -"In addition, setting *value* to ``NULL`` to delete an attribute must be " -"supported. It is usually convenient to set this field " -"to :c:func:`PyObject_GenericSetAttr`, which implements the normal way of " -"setting object attributes." -msgstr "" -"Außerdem muss unterstützt werden, dass *value* auf ``NULL`` gesetzt wird, um " -"ein Attribut zu löschen. Üblicherweise ist es praktisch, dieses Feld " -"auf :c:func:`PyObject_GenericSetAttr` zu setzen, was die gewöhnliche Art " -"umsetzt, Objektattribute zu setzen." - -#: ../../c-api/typeobj.rst:1121 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_setattr`: a subtype inherits " -"both :c:member:`~PyTypeObject.tp_setattr` " -"and :c:member:`~PyTypeObject.tp_setattro` from its base type when the " -"subtype's :c:member:`~PyTypeObject.tp_setattr` " -"and :c:member:`~PyTypeObject.tp_setattro` are both ``NULL``." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_setattr` vererbt: Ein Untertyp erbt " -"sowohl :c:member:`~PyTypeObject.tp_setattr` als " -"auch :c:member:`~PyTypeObject.tp_setattro` von seinem Basistyp, " -"wenn :c:member:`~PyTypeObject.tp_setattr` " -"und :c:member:`~PyTypeObject.tp_setattro` des Untertyps beide ``NULL`` sind." - -#: ../../c-api/typeobj.rst:1127 -msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`." -msgstr "" -":c:data:`PyBaseObject_Type` verwendet :c:func:`PyObject_GenericSetAttr`." - -#: ../../c-api/typeobj.rst:1132 -msgid "" -"Pointer to an additional structure that contains fields relevant only to " -"objects which implement the buffer interface. These fields are documented " -"in :ref:`buffer-structs`." -msgstr "" -"Zeiger auf eine zusätzliche Struktur mit Feldern, die nur für Objekte von " -"Bedeutung sind, die die Puffer-Schnittstelle umsetzen. Diese Felder sind " -"unter :ref:`buffer-structs` dokumentiert." - -#: ../../c-api/typeobj.rst:1138 -msgid "" -"The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the " -"contained fields are inherited individually." -msgstr "" -"Das Feld :c:member:`~PyTypeObject.tp_as_buffer` wird nicht vererbt, die " -"enthaltenen Felder werden aber einzeln vererbt." - -#: ../../c-api/typeobj.rst:1144 -msgid "" -"See :c:macro:`Py_tp_flags` for the corresponding :c:member:`Slot ID " -"`." -msgstr "" -"Die zugehörige :c:member:`Slot-ID ` steht " -"unter :c:macro:`Py_tp_flags`." - -#: ../../c-api/typeobj.rst:1147 -msgid "" -"This field is a bit mask of various flags. Some flags indicate variant " -"semantics for certain situations; others are used to indicate that certain " -"fields in the type object (or in the extension structures referenced " -"via :c:member:`~PyTypeObject.tp_as_number`, :c:member:`~PyTypeObject.tp_as_sequence`, :c:member:`~PyTypeObject.tp_as_mapping`, " -"and :c:member:`~PyTypeObject.tp_as_buffer`) that were historically not " -"always present are valid; if such a flag bit is clear, the type fields it " -"guards must not be accessed and must be considered to have a zero or " -"``NULL`` value instead." -msgstr "" -"Dieses Feld ist eine Bitmaske verschiedener Flags. Manche Flags zeigen " -"abweichendes Verhalten in bestimmten Situationen an, andere zeigen an, dass " -"bestimmte Felder im Typobjekt (oder in den " -"über :c:member:`~PyTypeObject.tp_as_number`, :c:member:`~PyTypeObject.tp_as_sequence`, :c:member:`~PyTypeObject.tp_as_mapping` " -"und :c:member:`~PyTypeObject.tp_as_buffer` referenzierten " -"Erweiterungsstrukturen), die früher nicht immer vorhanden waren, gültig " -"sind. Ist ein solches Flag-Bit nicht gesetzt, darf auf die Typfelder, die es " -"absichert, nicht zugegriffen werden. Sie sind stattdessen als null oder " -"``NULL`` zu betrachten." - -#: ../../c-api/typeobj.rst:1157 -msgid "" -"Inheritance of this field is complicated. Most flag bits are inherited " -"individually, i.e. if the base type has a flag bit set, the subtype inherits " -"this flag bit. The flag bits that pertain to extension structures are " -"strictly inherited if the extension structure is inherited, i.e. the base " -"type's value of the flag bit is copied into the subtype together with a " -"pointer to the extension structure. The :c:macro:`Py_TPFLAGS_HAVE_GC` flag " -"bit is inherited together with the :c:member:`~PyTypeObject.tp_traverse` " -"and :c:member:`~PyTypeObject.tp_clear` fields, i.e. if " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is clear in the subtype and " -"the :c:member:`~PyTypeObject.tp_traverse` " -"and :c:member:`~PyTypeObject.tp_clear` fields in the subtype exist and have " -"``NULL`` values." -msgstr "" -"Die Vererbung dieses Feldes ist kompliziert. Die meisten Flag-Bits werden " -"einzeln vererbt, das heißt: Ist ein Flag-Bit im Basistyp gesetzt, erbt der " -"Untertyp dieses Flag-Bit. Die Flag-Bits, die Erweiterungsstrukturen " -"betreffen, werden streng dann vererbt, wenn die Erweiterungsstruktur vererbt " -"wird, das heißt: Der Wert des Flag-Bits im Basistyp wird zusammen mit einem " -"Zeiger auf die Erweiterungsstruktur in den Untertyp kopiert. Das Flag-" -"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` wird gemeinsam mit den " -"Feldern :c:member:`~PyTypeObject.tp_traverse` " -"und :c:member:`~PyTypeObject.tp_clear` vererbt, also dann, wenn das Flag-" -"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` im Untertyp nicht gesetzt ist und die " -"Felder :c:member:`~PyTypeObject.tp_traverse` " -"und :c:member:`~PyTypeObject.tp_clear` im Untertyp vorhanden sind und " -"``NULL``-Werte haben." - -#: ../../c-api/typeobj.rst:1172 -msgid "" -":c:data:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | " -"Py_TPFLAGS_BASETYPE``." -msgstr "" -":c:data:`PyBaseObject_Type` verwendet ``Py_TPFLAGS_DEFAULT | " -"Py_TPFLAGS_BASETYPE``." - -#: ../../c-api/typeobj.rst:1175 -msgid "**Bit Masks:**" -msgstr "**Bitmasken:**" - -#: ../../c-api/typeobj.rst:1179 -msgid "" -"The following bit masks are currently defined; these can be ORed together " -"using the ``|`` operator to form the value of " -"the :c:member:`~PyTypeObject.tp_flags` field. The " -"macro :c:func:`PyType_HasFeature` takes a type and a flags value, *tp* and " -"*f*, and checks whether ``tp->tp_flags & f`` is non-zero." -msgstr "" -"Derzeit sind die folgenden Bitmasken festgelegt. Sie lassen sich über den " -"Operator ``|`` miteinander verodern, um den Wert des " -"Feldes :c:member:`~PyTypeObject.tp_flags` zu bilden. Das " -"Makro :c:func:`PyType_HasFeature` nimmt einen Typ und einen Flag-Wert, *tp* " -"und *f*, und prüft, ob ``tp->tp_flags & f`` ungleich null ist." - -#: ../../c-api/typeobj.rst:1186 -msgid "" -"This bit is set when the type object itself is allocated on the heap, for " -"example, types created dynamically using :c:func:`PyType_FromSpec`. In this " -"case, the :c:member:`~PyObject.ob_type` field of its instances is considered " -"a reference to the type, and the type object is INCREF'ed when a new " -"instance is created, and DECREF'ed when an instance is destroyed (this does " -"not apply to instances of subtypes; only the type referenced by the " -"instance's ob_type gets INCREF'ed or DECREF'ed). Heap types should " -"also :ref:`support garbage collection ` as they " -"can form a reference cycle with their own module object." -msgstr "" -"Dieses Bit ist gesetzt, wenn das Typobjekt selbst auf dem Heap angelegt ist, " -"zum Beispiel bei Typen, die dynamisch über :c:func:`PyType_FromSpec` erzeugt " -"werden. In diesem Fall gilt das Feld :c:member:`~PyObject.ob_type` seiner " -"Instanzen als Referenz auf den Typ, und das Typobjekt wird mit INCREF " -"versehen, wenn eine neue Instanz erzeugt wird, und mit DECREF, wenn eine " -"Instanz zerstört wird (das gilt nicht für Instanzen von Untertypen, sondern " -"nur für den Typ, auf den das ob_type der Instanz verweist, bekommt INCREF " -"oder DECREF). Heap-Typen sollten außerdem :ref:`die Speicherbereinigung " -"unterstützen `, da sie mit ihrem eigenen " -"Modulobjekt einen Referenzzyklus bilden können." - -#: ../../c-api/typeobj.rst:1197 ../../c-api/typeobj.rst:1208 -#: ../../c-api/typeobj.rst:1218 ../../c-api/typeobj.rst:1228 -#: ../../c-api/typeobj.rst:1260 -msgid "???" -msgstr "???" - -#: ../../c-api/typeobj.rst:1202 -msgid "" -"This bit is set when the type can be used as the base type of another type. " -"If this bit is clear, the type cannot be subtyped (similar to a \"final\" " -"class in Java)." -msgstr "" -"Dieses Bit ist gesetzt, wenn der Typ als Basistyp eines anderen Typs " -"verwendet werden kann. Ist dieses Bit nicht gesetzt, lässt sich vom Typ " -"keine Unterklasse bilden (ähnlich einer „final“-Klasse in Java)." - -#: ../../c-api/typeobj.rst:1213 -msgid "" -"This bit is set when the type object has been fully initialized " -"by :c:func:`PyType_Ready`." -msgstr "" -"Dieses Bit ist gesetzt, wenn das Typobjekt von :c:func:`PyType_Ready` " -"vollständig initialisiert wurde." - -#: ../../c-api/typeobj.rst:1223 -msgid "" -"This bit is set while :c:func:`PyType_Ready` is in the process of " -"initializing the type object." -msgstr "" -"Dieses Bit ist gesetzt, während :c:func:`PyType_Ready` das Typobjekt gerade " -"initialisiert." - -#: ../../c-api/typeobj.rst:1233 -msgid "" -"This bit is set when the object supports garbage collection. If this bit is " -"set, memory for new instances (see :c:member:`~PyTypeObject.tp_alloc`) must " -"be allocated using :c:macro:`PyObject_GC_New` " -"or :c:func:`PyType_GenericAlloc` and deallocated " -"(see :c:member:`~PyTypeObject.tp_free`) using :c:func:`PyObject_GC_Del`. " -"More information in section :ref:`supporting-cycle-detection`." -msgstr "" -"Dieses Bit ist gesetzt, wenn das Objekt die Speicherbereinigung unterstützt. " -"Ist dieses Bit gesetzt, muss Speicher für neue Instanzen " -"(siehe :c:member:`~PyTypeObject.tp_alloc`) über :c:macro:`PyObject_GC_New` " -"oder :c:func:`PyType_GenericAlloc` angefordert und " -"(siehe :c:member:`~PyTypeObject.tp_free`) über :c:func:`PyObject_GC_Del` " -"freigegeben werden. Mehr dazu im Abschnitt :ref:`supporting-cycle-detection`." - -#: ../../c-api/typeobj.rst:1242 ../../c-api/typeobj.rst:1585 -#: ../../c-api/typeobj.rst:1731 -msgid "Group: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject.tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" -msgstr "Gruppe: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject.tp_traverse`, :c:member:`~PyTypeObject.tp_clear`" - -#: ../../c-api/typeobj.rst:1244 -msgid "" -"The :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with " -"the :c:member:`~PyTypeObject.tp_traverse` " -"and :c:member:`~PyTypeObject.tp_clear` fields, i.e. if " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is clear in the subtype and " -"the :c:member:`~PyTypeObject.tp_traverse` " -"and :c:member:`~PyTypeObject.tp_clear` fields in the subtype exist and have " -"``NULL`` values." -msgstr "" -"Das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_GC` wird gemeinsam mit den " -"Feldern :c:member:`~PyTypeObject.tp_traverse` " -"und :c:member:`~PyTypeObject.tp_clear` vererbt, also dann, wenn das Flag-" -"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` im Untertyp nicht gesetzt ist und die " -"Felder :c:member:`~PyTypeObject.tp_traverse` " -"und :c:member:`~PyTypeObject.tp_clear` im Untertyp vorhanden sind und " -"``NULL``-Werte haben." - -#: ../../c-api/typeobj.rst:1254 -msgid "" -"This is a bitmask of all the bits that pertain to the existence of certain " -"fields in the type object and its extension structures. Currently, it " -"includes the following bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." -msgstr "" -"Das ist eine Bitmaske aller Bits, die das Vorhandensein bestimmter Felder im " -"Typobjekt und seinen Erweiterungsstrukturen betreffen. Derzeit umfasst sie " -"die folgenden Bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`." - -#: ../../c-api/typeobj.rst:1265 -msgid "This bit indicates that objects behave like unbound methods." -msgstr "" -"Dieses Bit zeigt an, dass Objekte sich wie ungebundene Methoden verhalten." - -#: ../../c-api/typeobj.rst:1267 -msgid "If this flag is set for ``type(meth)``, then:" -msgstr "Ist dieses Flag für ``type(meth)`` gesetzt, gilt:" - -#: ../../c-api/typeobj.rst:1269 -msgid "" -"``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be " -"equivalent to ``meth(obj, *args, **kwds)``." -msgstr "" -"``meth.__get__(obj, cls)(*args, **kwds)`` (mit ``obj`` nicht None) muss " -"gleichbedeutend sein mit ``meth(obj, *args, **kwds)``." - -#: ../../c-api/typeobj.rst:1272 -msgid "" -"``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to " -"``meth(*args, **kwds)``." -msgstr "" -"``meth.__get__(None, cls)(*args, **kwds)`` muss gleichbedeutend sein mit " -"``meth(*args, **kwds)``." - -#: ../../c-api/typeobj.rst:1275 -msgid "" -"This flag enables an optimization for typical method calls like " -"``obj.meth()``: it avoids creating a temporary \"bound method\" object for " -"``obj.meth``." -msgstr "" -"Dieses Flag ermöglicht eine Optimierung für typische Methodenaufrufe wie " -"``obj.meth()``: Es vermeidet, für ``obj.meth`` ein vorübergehendes Objekt " -"für die „gebundene Methode“ zu erzeugen." - -#: ../../c-api/typeobj.rst:1283 -msgid "" -"This flag is never inherited by types without " -"the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` flag set. For extension types, it " -"is inherited whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited." -msgstr "" -"Dieses Flag wird nie an Typen vererbt, bei denen das " -"Flag :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` nicht gesetzt ist. Bei " -"Erweiterungstypen wird es immer dann vererbt, " -"wenn :c:member:`~PyTypeObject.tp_descr_get` vererbt wird." - -#: ../../c-api/typeobj.rst:1289 -msgid "" -"This bit indicates that instances of the class have " -"a :attr:`~object.__dict__` attribute, and that the space for the dictionary " -"is managed by the VM." -msgstr "" -"Dieses Bit zeigt an, dass Instanzen der Klasse ein " -"Attribut :attr:`~object.__dict__` haben und dass die VM den Platz für das " -"Dictionary verwaltet." - -#: ../../c-api/typeobj.rst:1292 ../../c-api/typeobj.rst:1310 -msgid "If this flag is set, :c:macro:`Py_TPFLAGS_HAVE_GC` must also be set." -msgstr "" -"Ist dieses Flag gesetzt, muss auch :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt " -"sein." - -#: ../../c-api/typeobj.rst:1294 -msgid "" -"The type traverse function must call :c:func:`PyObject_VisitManagedDict` and " -"its clear function must call :c:func:`PyObject_ClearManagedDict`." -msgstr "" -"Die traverse-Funktion des Typs muss :c:func:`PyObject_VisitManagedDict` " -"aufrufen und seine clear-Funktion :c:func:`PyObject_ClearManagedDict`." - -#: ../../c-api/typeobj.rst:1301 -msgid "" -"This flag is inherited unless the :c:member:`~PyTypeObject.tp_dictoffset` " -"field is set in a superclass." -msgstr "" -"Dieses Flag wird vererbt, sofern das " -"Feld :c:member:`~PyTypeObject.tp_dictoffset` nicht in einer Oberklasse " -"gesetzt ist." - -#: ../../c-api/typeobj.rst:1307 -msgid "" -"This bit indicates that instances of the class should be weakly " -"referenceable." -msgstr "" -"Dieses Bit zeigt an, dass Instanzen der Klasse schwach referenzierbar sein " -"sollen." - -#: ../../c-api/typeobj.rst:1316 -msgid "" -"This flag is inherited unless " -"the :c:member:`~PyTypeObject.tp_weaklistoffset` field is set in a superclass." -msgstr "" -"Dieses Flag wird vererbt, sofern das " -"Feld :c:member:`~PyTypeObject.tp_weaklistoffset` nicht in einer Oberklasse " -"gesetzt ist." - -#: ../../c-api/typeobj.rst:1322 -msgid "" -"These bits indicate that the VM will manage some fields by storing them " -"before the object. Currently, this macro is equivalent " -"to :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`." -msgstr "" -"Diese Bits zeigen an, dass die VM einige Felder verwaltet, indem sie sie vor " -"dem Objekt ablegt. Derzeit entspricht dieses " -"Makro :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`." - -#: ../../c-api/typeobj.rst:1326 -msgid "" -"This macro value relies on the implementation of the VM, so its value is not " -"stable and may change in a future version. Prefer using individual flags " -"instead." -msgstr "" -"Der Wert dieses Makros hängt von der Umsetzung der VM ab, er ist deshalb " -"nicht stabil und kann sich in einer künftigen Version ändern. Verwende " -"besser die einzelnen Flags." - -#: ../../c-api/typeobj.rst:1335 -msgid "" -"Only usable with variable-size types, i.e. ones with non-" -"zero :c:member:`~PyTypeObject.tp_itemsize`." -msgstr "" -"Nur bei Typen veränderlicher Größe verwendbar, also solchen mit " -"einem :c:member:`~PyTypeObject.tp_itemsize` ungleich null." - -#: ../../c-api/typeobj.rst:1338 -msgid "" -"Indicates that the variable-sized portion of an instance of this type is at " -"the end of the instance's memory area, at an offset of ``Py_TYPE(obj)-" -">tp_basicsize`` (which may be different in each subclass)." -msgstr "" -"Zeigt an, dass der Teil veränderlicher Größe einer Instanz dieses Typs am " -"Ende des Speicherbereichs der Instanz liegt, beim Versatz ``Py_TYPE(obj)-" -">tp_basicsize`` (der in jeder Unterklasse anders sein kann)." - -#: ../../c-api/typeobj.rst:1343 -msgid "" -"When setting this flag, be sure that all superclasses either use this memory " -"layout, or are not variable-sized. Python does not check this." -msgstr "" -"Vergewissere dich beim Setzen dieses Flags, dass alle Oberklassen entweder " -"denselben Speicheraufbau verwenden oder nicht von veränderlicher Größe sind. " -"Python prüft das nicht." - -#: ../../c-api/typeobj.rst:1351 -msgid "This flag is inherited." -msgstr "Dieses Flag wird vererbt." - -#: ../../c-api/typeobj.rst:1365 -msgid "" -"Functions such as :c:func:`PyLong_Check` will " -"call :c:func:`PyType_FastSubclass` with one of these flags to quickly " -"determine if a type is a subclass of a built-in type; such specific checks " -"are faster than a generic check, like :c:func:`PyObject_IsInstance`. Custom " -"types that inherit from built-ins should have " -"their :c:member:`~PyTypeObject.tp_flags` set appropriately, or the code that " -"interacts with such types will behave differently depending on what kind of " -"check is used." -msgstr "" -"Funktionen wie :c:func:`PyLong_Check` rufen :c:func:`PyType_FastSubclass` " -"mit einem dieser Flags auf, um schnell festzustellen, ob ein Typ eine " -"Unterklasse eines integrierten Typs ist. Solche gezielten Prüfungen sind " -"schneller als eine allgemeine Prüfung wie :c:func:`PyObject_IsInstance`. Bei " -"eigenen Typen, die von integrierten Typen erben, " -"sollte :c:member:`~PyTypeObject.tp_flags` passend gesetzt sein, sonst " -"verhält sich der Code, der mit solchen Typen umgeht, je nach verwendeter " -"Prüfung unterschiedlich." - -#: ../../c-api/typeobj.rst:1376 -msgid "" -"This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is " -"present in the type structure." -msgstr "" -"Dieses Bit ist gesetzt, wenn der Slot :c:member:`~PyTypeObject.tp_finalize` " -"in der Typstruktur vorhanden ist." - -#: ../../c-api/typeobj.rst:1381 -msgid "" -"This flag isn't necessary anymore, as the interpreter assumes " -"the :c:member:`~PyTypeObject.tp_finalize` slot is always present in the type " -"structure." -msgstr "" -"Dieses Flag ist nicht mehr nötig, weil der Interpreter davon ausgeht, dass " -"der Slot :c:member:`~PyTypeObject.tp_finalize` in der Typstruktur immer " -"vorhanden ist." - -#: ../../c-api/typeobj.rst:1392 -msgid "" -"This bit is set when the class implements the :ref:`vectorcall protocol " -"`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for " -"details." -msgstr "" -"Dieses Bit ist gesetzt, wenn die Klasse das :ref:`vectorcall-Protokoll " -"` umsetzt. Einzelheiten stehen " -"unter :c:member:`~PyTypeObject.tp_vectorcall_offset`." - -#: ../../c-api/typeobj.rst:1398 -msgid "" -"This bit is inherited if :c:member:`~PyTypeObject.tp_call` is also inherited." -msgstr "" -"Dieses Bit wird vererbt, wenn auch :c:member:`~PyTypeObject.tp_call` vererbt " -"wird." - -#: ../../c-api/typeobj.rst:1401 -msgid "as ``_Py_TPFLAGS_HAVE_VECTORCALL``" -msgstr "als ``_Py_TPFLAGS_HAVE_VECTORCALL``" - -#: ../../c-api/typeobj.rst:1405 -msgid "" -"Renamed to the current name, without the leading underscore. The old " -"provisional name is :term:`soft deprecated`." -msgstr "" -"Auf den jetzigen Namen umbenannt, ohne den führenden Unterstrich. Der alte " -"vorläufige Name ist :term:`sanft abgekündigt `." - -#: ../../c-api/typeobj.rst:1410 -msgid "" -"This flag is now removed from a class when the " -"class's :py:meth:`~object.__call__` method is reassigned." -msgstr "" -"Dieses Flag wird jetzt von einer Klasse entfernt, wenn die " -"Methode :py:meth:`~object.__call__` der Klasse neu zugewiesen wird." - -#: ../../c-api/typeobj.rst:1413 -msgid "This flag can now be inherited by mutable classes." -msgstr "Dieses Flag kann jetzt von veränderlichen Klassen geerbt werden." - -#: ../../c-api/typeobj.rst:1417 -msgid "" -"This bit is set for type objects that are immutable: type attributes cannot " -"be set nor deleted." -msgstr "" -"Dieses Bit ist bei Typobjekten gesetzt, die unveränderlich sind: " -"Typattribute lassen sich weder setzen noch löschen." - -#: ../../c-api/typeobj.rst:1419 -msgid "" -":c:func:`PyType_Ready` automatically applies this flag to :ref:`static types " -"`." -msgstr "" -":c:func:`PyType_Ready` setzt dieses Flag bei :ref:`statischen Typen ` automatisch." - -#: ../../c-api/typeobj.rst:1424 ../../c-api/typeobj.rst:1533 -#: ../../c-api/typeobj.rst:1545 -msgid "This flag is not inherited." -msgstr "Dieses Flag wird nicht vererbt." - -#: ../../c-api/typeobj.rst:1430 -msgid "" -"Disallow creating instances of the type: " -"set :c:member:`~PyTypeObject.tp_new` to NULL and don't create the " -"``__new__`` key in the type dictionary." -msgstr "" -"Verbietet das Erzeugen von Instanzen des Typs: Es " -"setzt :c:member:`~PyTypeObject.tp_new` auf NULL und legt den Schlüssel " -"``__new__`` im Dictionary des Typs nicht an." - -#: ../../c-api/typeobj.rst:1434 -msgid "" -"The flag must be set before creating the type, not after. For example, it " -"must be set before :c:func:`PyType_Ready` is called on the type." -msgstr "" -"Das Flag muss gesetzt werden, bevor der Typ erzeugt wird, nicht danach. Es " -"muss zum Beispiel gesetzt sein, bevor :c:func:`PyType_Ready` auf dem Typ " -"aufgerufen wird." - -#: ../../c-api/typeobj.rst:1437 -msgid "" -"The flag is set automatically on :ref:`static types ` " -"if :c:member:`~PyTypeObject.tp_base` is NULL or ``&PyBaseObject_Type`` " -"and :c:member:`~PyTypeObject.tp_new` is NULL." -msgstr "" -"Bei :ref:`statischen Typen ` wird das Flag automatisch " -"gesetzt, wenn :c:member:`~PyTypeObject.tp_base` NULL oder " -"``&PyBaseObject_Type`` ist und :c:member:`~PyTypeObject.tp_new` NULL ist." - -#: ../../c-api/typeobj.rst:1443 -msgid "" -"This flag is not inherited. However, subclasses will not be instantiable " -"unless they provide a non-NULL :c:member:`~PyTypeObject.tp_new` (which is " -"only possible via the C API)." -msgstr "" -"Dieses Flag wird nicht vererbt. Unterklassen lassen sich allerdings nur dann " -"instanziieren, wenn sie ein :c:member:`~PyTypeObject.tp_new` ungleich NULL " -"bereitstellen (was nur über die C-API möglich ist)." - -#: ../../c-api/typeobj.rst:1450 -msgid "" -"To disallow instantiating a class directly but allow instantiating its " -"subclasses (e.g. for an :term:`abstract base class`), do not use this flag. " -"Instead, make :c:member:`~PyTypeObject.tp_new` only succeed for subclasses." -msgstr "" -"Um das unmittelbare Instanziieren einer Klasse zu verbieten, das " -"Instanziieren ihrer Unterklassen aber zu erlauben (etwa bei " -"einer :term:`abstrakten Basisklasse `), verwende dieses " -"Flag nicht. Lass stattdessen :c:member:`~PyTypeObject.tp_new` nur bei " -"Unterklassen gelingen." - -#: ../../c-api/typeobj.rst:1461 -msgid "" -"This bit indicates that instances of the class may match mapping patterns " -"when used as the subject of a :keyword:`match` block. It is automatically " -"set when registering or subclassing :class:`collections.abc.Mapping`, and " -"unset when registering :class:`collections.abc.Sequence`." -msgstr "" -"Dieses Bit zeigt an, dass Instanzen der Klasse auf Mapping-Muster passen " -"können, wenn sie als Gegenstand eines :keyword:`match`-Blocks verwendet " -"werden. Es wird beim Registrieren oder Ableiten " -"von :class:`collections.abc.Mapping` automatisch gesetzt und beim " -"Registrieren von :class:`collections.abc.Sequence` gelöscht." - -#: ../../c-api/typeobj.rst:1468 ../../c-api/typeobj.rst:1490 -msgid "" -":c:macro:`Py_TPFLAGS_MAPPING` and :c:macro:`Py_TPFLAGS_SEQUENCE` are " -"mutually exclusive; it is an error to enable both flags simultaneously." -msgstr "" -":c:macro:`Py_TPFLAGS_MAPPING` und :c:macro:`Py_TPFLAGS_SEQUENCE` schließen " -"einander aus. Beide Flags gleichzeitig einzuschalten ist ein Fehler." - -#: ../../c-api/typeobj.rst:1473 -msgid "" -"This flag is inherited by types that do not already " -"set :c:macro:`Py_TPFLAGS_SEQUENCE`." -msgstr "" -"Dieses Flag wird an Typen vererbt, die nicht " -"bereits :c:macro:`Py_TPFLAGS_SEQUENCE` setzen." - -#: ../../c-api/typeobj.rst:1476 ../../c-api/typeobj.rst:1498 -msgid ":pep:`634` -- Structural Pattern Matching: Specification" -msgstr ":pep:`634` -- Structural Pattern Matching: Specification" - -#: ../../c-api/typeobj.rst:1483 -msgid "" -"This bit indicates that instances of the class may match sequence patterns " -"when used as the subject of a :keyword:`match` block. It is automatically " -"set when registering or subclassing :class:`collections.abc.Sequence`, and " -"unset when registering :class:`collections.abc.Mapping`." -msgstr "" -"Dieses Bit zeigt an, dass Instanzen der Klasse auf Sequenzmuster passen " -"können, wenn sie als Gegenstand eines :keyword:`match`-Blocks verwendet " -"werden. Es wird beim Registrieren oder Ableiten " -"von :class:`collections.abc.Sequence` automatisch gesetzt und beim " -"Registrieren von :class:`collections.abc.Mapping` gelöscht." - -#: ../../c-api/typeobj.rst:1495 -msgid "" -"This flag is inherited by types that do not already " -"set :c:macro:`Py_TPFLAGS_MAPPING`." -msgstr "" -"Dieses Flag wird an Typen vererbt, die nicht " -"bereits :c:macro:`Py_TPFLAGS_MAPPING` setzen." - -#: ../../c-api/typeobj.rst:1505 -msgid "" -"Internal. Do not set or unset this flag. To indicate that a class has " -"changed call :c:func:`PyType_Modified`" -msgstr "" -"Intern. Setze oder lösche dieses Flag nicht. Um anzuzeigen, dass eine Klasse " -"sich geändert hat, rufe :c:func:`PyType_Modified` auf." - -#: ../../c-api/typeobj.rst:1509 -msgid "" -"This flag is present in header files, but is not be used. It will be removed " -"in a future version of CPython" -msgstr "" -"Dieses Flag ist in Header-Dateien vorhanden, wird aber nicht verwendet. Es " -"wird in einer künftigen Version von CPython entfernt." - -#: ../../c-api/typeobj.rst:1515 -msgid "" -"This macro does nothing. Historically, this would indicate that " -"the :c:member:`~PyTypeObject.tp_version_tag` field was available and " -"initialized." -msgstr "" -"Dieses Makro tut nichts. Früher zeigte es an, dass das " -"Feld :c:member:`~PyTypeObject.tp_version_tag` verfügbar und initialisiert " -"war." - -#: ../../c-api/typeobj.rst:1525 -msgid "" -"This bit indicates that instances of this type will have an \"inline " -"values\" array (containing the object's attributes) placed directly after " -"the end of the object." -msgstr "" -"Dieses Bit zeigt an, dass Instanzen dieses Typs ein Array mit „Inline-" -"Werten“ haben (das die Attribute des Objekts enthält), das unmittelbar " -"hinter dem Ende des Objekts liegt." - -#: ../../c-api/typeobj.rst:1529 -msgid "This requires that :c:macro:`Py_TPFLAGS_HAVE_GC` is set." -msgstr "Das setzt voraus, dass :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt ist." - -#: ../../c-api/typeobj.rst:1540 -msgid "" -"This bit indicates that this is an abstract type and therefore cannot be " -"instantiated." -msgstr "" -"Dieses Bit zeigt an, dass dies ein abstrakter Typ ist und sich deshalb nicht " -"instanziieren lässt." - -#: ../../c-api/typeobj.rst:1548 -msgid ":mod:`abc`" -msgstr ":mod:`abc`" - -#: ../../c-api/typeobj.rst:1553 -msgid "" -"Internal. Do not set or unset this flag. Historically, this was a reserved " -"flag for use in Stackless Python." -msgstr "" -"Intern. Setze oder lösche dieses Flag nicht. Früher war das ein reserviertes " -"Flag zur Verwendung in Stackless Python." - -#: ../../c-api/typeobj.rst:1557 -msgid "" -"This flag is present in header files, but is not be used. This may be " -"removed in a future version of CPython." -msgstr "" -"Dieses Flag ist in Header-Dateien vorhanden, wird aber nicht verwendet. Es " -"wird möglicherweise in einer künftigen Version von CPython entfernt." - -#: ../../c-api/typeobj.rst:1565 -msgid "" -"An optional pointer to a NUL-terminated C string giving the docstring for " -"this type object. This is exposed as the :attr:`~type.__doc__` attribute on " -"the type and instances of the type." -msgstr "" -"Ein wahlfreier Zeiger auf eine NUL-terminierte C-Zeichenkette mit dem " -"Docstring für dieses Typobjekt. Er wird als Attribut :attr:`~type.__doc__` " -"am Typ und an den Instanzen des Typs nach außen gegeben." - -#: ../../c-api/typeobj.rst:1571 -msgid "This field is *not* inherited by subtypes." -msgstr "Dieses Feld wird *nicht* an Untertypen vererbt." - -#: ../../c-api/typeobj.rst:1578 -msgid "" -"An optional pointer to a traversal function for the garbage collector. This " -"is only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set." -msgstr "" -"Ein wahlfreier Zeiger auf eine traverse-Funktion für die " -"Speicherbereinigung. Sie wird nur verwendet, wenn das Flag-" -"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` gesetzt ist." - -#: ../../c-api/typeobj.rst:1581 -msgid "See :ref:`gc-traversal` for documentation." -msgstr "Die Dokumentation dazu steht unter :ref:`gc-traversal`." - -#: ../../c-api/typeobj.rst:1587 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_clear` and " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag " -"bit, :c:member:`~PyTypeObject.tp_traverse`, " -"and :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type " -"if they are all zero in the subtype." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_clear` und dem Flag-" -"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` vererbt: Das Flag-" -"Bit, :c:member:`~PyTypeObject.tp_traverse` " -"und :c:member:`~PyTypeObject.tp_clear` werden alle vom Basistyp geerbt, wenn " -"sie im Untertyp alle null sind." - -#: ../../c-api/typeobj.rst:1597 -msgid "An optional pointer to a clear function. The signature is::" -msgstr "Ein wahlfreier Zeiger auf eine clear-Funktion. Die Signatur lautet::" - -#: ../../c-api/typeobj.rst:1599 -msgid "int tp_clear(PyObject *);" -msgstr "int tp_clear(PyObject *);" - -#: ../../c-api/typeobj.rst:1601 -msgid "" -"The purpose of this function is to break reference cycles that are causing " -"a :term:`cyclic isolate` so that the objects can be safely destroyed. A " -"cleared object is a partially destroyed object; the object is not obligated " -"to satisfy design invariants held during normal use." -msgstr "" -"Der Zweck dieser Funktion ist es, Referenzzyklen aufzubrechen, die " -"ein :term:`zyklisches Isolat ` verursachen, damit die " -"Objekte gefahrlos zerstört werden können. Ein geleertes Objekt ist ein " -"teilweise zerstörtes Objekt. Es ist nicht verpflichtet, die " -"Entwurfsinvarianten einzuhalten, die im gewöhnlichen Betrieb gelten." - -#: ../../c-api/typeobj.rst:1606 -msgid "" -":c:member:`!tp_clear` does not need to delete references to objects that " -"can't participate in reference cycles, such as Python strings or Python " -"integers. However, it may be convenient to clear all references, and write " -"the type's :c:member:`~PyTypeObject.tp_dealloc` function to " -"invoke :c:member:`!tp_clear` to avoid code duplication. (Beware " -"that :c:member:`!tp_clear` might have already been called. Prefer calling " -"idempotent functions like :c:func:`Py_CLEAR`.)" -msgstr "" -":c:member:`!tp_clear` muss keine Referenzen auf Objekte löschen, die nicht " -"an Referenzzyklen teilnehmen können, etwa Python-Zeichenketten oder ganze " -"Zahlen. Es kann aber bequem sein, alle Referenzen zu leeren und die " -"Funktion :c:member:`~PyTypeObject.tp_dealloc` des Typs so zu schreiben, dass " -"sie :c:member:`!tp_clear` aufruft, um doppelten Code zu vermeiden. (Sei dir " -"bewusst, dass :c:member:`!tp_clear` bereits aufgerufen worden sein kann. " -"Rufe besser idempotente Funktionen wie :c:func:`Py_CLEAR` auf.)" - -#: ../../c-api/typeobj.rst:1614 -msgid "" -"Any non-trivial cleanup should be performed " -"in :c:member:`~PyTypeObject.tp_finalize` instead of :c:member:`!tp_clear`." -msgstr "" -"Jedes nicht triviale Aufräumen sollte " -"in :c:member:`~PyTypeObject.tp_finalize` erfolgen statt in :c:member:`!" -"tp_clear`." - -#: ../../c-api/typeobj.rst:1619 -msgid "" -"If :c:member:`!tp_clear` fails to break a reference cycle then the objects " -"in the :term:`cyclic isolate` may remain indefinitely uncollectable " -"(\"leak\"). See :data:`gc.garbage`." -msgstr "" -"Gelingt es :c:member:`!tp_clear` nicht, einen Referenzzyklus aufzubrechen, " -"bleiben die Objekte im :term:`zyklischen Isolat ` " -"möglicherweise auf Dauer nicht einsammelbar („Leck“). " -"Siehe :data:`gc.garbage`." - -#: ../../c-api/typeobj.rst:1625 -msgid "" -"Referents (direct and indirect) might have already been cleared; they are " -"not guaranteed to be in a consistent state." -msgstr "" -"Referenzierte Objekte (unmittelbar und mittelbar) können bereits geleert " -"worden sein. Dass sie in einem widerspruchsfreien Zustand sind, ist nicht " -"zugesichert." - -#: ../../c-api/typeobj.rst:1630 -msgid "" -"The :c:member:`~PyTypeObject.tp_clear` function can be called from any " -"thread." -msgstr "" -"Die Funktion :c:member:`~PyTypeObject.tp_clear` darf aus jedem Thread " -"aufgerufen werden." - -#: ../../c-api/typeobj.rst:1635 -msgid "" -"An object is not guaranteed to be automatically cleared before its " -"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called." -msgstr "" -"Dass ein Objekt automatisch geleert wird, bevor sein Destruktor " -"(:c:member:`~PyTypeObject.tp_dealloc`) aufgerufen wird, ist nicht " -"zugesichert." - -#: ../../c-api/typeobj.rst:1638 -msgid "" -"This function differs from the destructor " -"(:c:member:`~PyTypeObject.tp_dealloc`) in the following ways:" -msgstr "" -"Diese Funktion unterscheidet sich vom Destruktor " -"(:c:member:`~PyTypeObject.tp_dealloc`) in folgender Hinsicht:" - -#: ../../c-api/typeobj.rst:1641 -msgid "" -"The purpose of clearing an object is to remove references to other objects " -"that might participate in a reference cycle. The purpose of the destructor, " -"on the other hand, is a superset: it must release *all* resources it owns, " -"including references to objects that cannot participate in a reference cycle " -"(e.g., integers) as well as the object's own memory (by " -"calling :c:member:`~PyTypeObject.tp_free`)." -msgstr "" -"Der Zweck des Leerens eines Objekts ist es, Referenzen auf andere Objekte zu " -"entfernen, die an einem Referenzzyklus teilnehmen könnten. Der Zweck des " -"Destruktors ist dagegen umfassender: Er muss *alle* Ressourcen freigeben, " -"die ihm gehören, auch Referenzen auf Objekte, die an keinem Referenzzyklus " -"teilnehmen können (etwa ganze Zahlen), sowie den Speicher des Objekts selbst " -"(durch Aufruf von :c:member:`~PyTypeObject.tp_free`)." - -#: ../../c-api/typeobj.rst:1647 -msgid "" -"When :c:member:`!tp_clear` is called, other objects might still hold " -"references to the object being cleared. Because of this, :c:member:`!" -"tp_clear` must not deallocate the object's own memory " -"(:c:member:`~PyTypeObject.tp_free`). The destructor, on the other hand, is " -"only called when no (strong) references exist, and as such, must safely " -"destroy the object itself by deallocating it." -msgstr "" -"Wenn :c:member:`!tp_clear` aufgerufen wird, halten andere Objekte " -"möglicherweise noch Referenzen auf das zu leerende Objekt. Deshalb " -"darf :c:member:`!tp_clear` den Speicher des Objekts selbst nicht freigeben " -"(:c:member:`~PyTypeObject.tp_free`). Der Destruktor wird dagegen erst " -"aufgerufen, wenn keine (starken) Referenzen mehr bestehen, und muss das " -"Objekt deshalb gefahrlos zerstören, indem er es freigibt." - -#: ../../c-api/typeobj.rst:1653 -msgid "" -":c:member:`!tp_clear` might never be automatically called. An object's " -"destructor, on the other hand, will be automatically called some time after " -"the object becomes unreachable (i.e., either there are no references to the " -"object or the object is a member of a :term:`cyclic isolate`)." -msgstr "" -":c:member:`!tp_clear` wird möglicherweise nie automatisch aufgerufen. Der " -"Destruktor eines Objekts wird dagegen einige Zeit, nachdem das Objekt " -"unerreichbar geworden ist, automatisch aufgerufen (also wenn entweder keine " -"Referenzen mehr auf das Objekt bestehen oder das Objekt Teil " -"eines :term:`zyklischen Isolats ` ist)." - -#: ../../c-api/typeobj.rst:1658 -msgid "" -"No guarantees are made about when, if, or how often Python automatically " -"clears an object, except:" -msgstr "" -"Darüber, wann, ob und wie oft Python ein Objekt automatisch leert, werden " -"keine Zusagen gemacht, außer:" - -#: ../../c-api/typeobj.rst:1661 -msgid "" -"Python will not automatically clear an object if it is reachable, i.e., " -"there is a reference to it and it is not a member of a :term:`cyclic " -"isolate`." -msgstr "" -"Python leert ein Objekt nicht automatisch, wenn es erreichbar ist, also wenn " -"eine Referenz darauf besteht und es nicht Teil eines :term:`zyklischen " -"Isolats ` ist." - -#: ../../c-api/typeobj.rst:1664 -msgid "" -"Python will not automatically clear an object if it has not been " -"automatically finalized (see :c:member:`~PyTypeObject.tp_finalize`). (If " -"the finalizer resurrected the object, the object may or may not be " -"automatically finalized again before it is cleared.)" -msgstr "" -"Python leert ein Objekt nicht automatisch, wenn es nicht automatisch " -"finalisiert wurde (siehe :c:member:`~PyTypeObject.tp_finalize`). (Hat der " -"Finalisierer das Objekt wieder auferstehen lassen, kann es sein, dass das " -"Objekt vor dem Leeren noch einmal automatisch finalisiert wird oder auch " -"nicht.)" - -#: ../../c-api/typeobj.rst:1668 -msgid "" -"If an object is a member of a :term:`cyclic isolate`, Python will not " -"automatically clear it if any member of the cyclic isolate has not yet been " -"automatically finalized (:c:member:`~PyTypeObject.tp_finalize`)." -msgstr "" -"Ist ein Objekt Teil eines :term:`zyklischen Isolats `, leert " -"Python es nicht automatisch, solange noch ein Mitglied des Isolats nicht " -"automatisch finalisiert wurde (:c:member:`~PyTypeObject.tp_finalize`)." - -#: ../../c-api/typeobj.rst:1671 -msgid "" -"Python will not destroy an object until after any automatic calls to " -"its :c:member:`!tp_clear` function have returned. This ensures that the act " -"of breaking a reference cycle does not invalidate the ``self`` pointer " -"while :c:member:`!tp_clear` is still executing." -msgstr "" -"Python zerstört ein Objekt erst, nachdem alle automatischen Aufrufe seiner " -"Funktion :c:member:`!tp_clear` zurückgekehrt sind. Damit ist sichergestellt, " -"dass das Aufbrechen eines Referenzzyklus den Zeiger ``self`` nicht ungültig " -"macht, während :c:member:`!tp_clear` noch läuft." - -#: ../../c-api/typeobj.rst:1675 -msgid "" -"Python will not automatically call :c:member:`!tp_clear` multiple times " -"concurrently." -msgstr "" -"Python ruft :c:member:`!tp_clear` nicht automatisch mehrfach gleichzeitig " -"auf." - -#: ../../c-api/typeobj.rst:1678 -msgid "" -"CPython currently only automatically clears objects as needed to break " -"reference cycles in a :term:`cyclic isolate`, but future versions might " -"clear objects regularly before their destruction." -msgstr "" -"CPython leert derzeit nur die Objekte automatisch, die nötig sind, um " -"Referenzzyklen in einem :term:`zyklischen Isolat ` " -"aufzubrechen. Künftige Versionen könnten Objekte aber regelmäßig vor ihrer " -"Zerstörung leeren." - -#: ../../c-api/typeobj.rst:1682 -msgid "" -"Taken together, all :c:member:`~PyTypeObject.tp_clear` functions in the " -"system must combine to break all reference cycles. This is subtle, and if " -"in any doubt supply a :c:member:`~PyTypeObject.tp_clear` function. For " -"example, the tuple type does not implement " -"a :c:member:`~PyTypeObject.tp_clear` function, because it's possible to " -"prove that no reference cycle can be composed entirely of tuples. Therefore " -"the :c:member:`~PyTypeObject.tp_clear` functions of other types are " -"responsible for breaking any cycle containing a tuple. This isn't " -"immediately obvious, and there's rarely a good reason to avoid " -"implementing :c:member:`~PyTypeObject.tp_clear`." -msgstr "" -"Zusammengenommen müssen alle Funktionen :c:member:`~PyTypeObject.tp_clear` " -"im System gemeinsam alle Referenzzyklen aufbrechen. Das ist feinsinnig, und " -"im Zweifel stellst du besser eine " -"Funktion :c:member:`~PyTypeObject.tp_clear` bereit. Der Typ tuple zum " -"Beispiel setzt keine Funktion :c:member:`~PyTypeObject.tp_clear` um, weil " -"sich beweisen lässt, dass kein Referenzzyklus ausschließlich aus Tupeln " -"bestehen kann. Deshalb sind die " -"Funktionen :c:member:`~PyTypeObject.tp_clear` anderer Typen dafür zuständig, " -"jeden Zyklus aufzubrechen, der ein Tupel enthält. Das ist nicht sofort " -"offensichtlich, und es gibt selten einen guten " -"Grund, :c:member:`~PyTypeObject.tp_clear` nicht umzusetzen." - -#: ../../c-api/typeobj.rst:1693 -msgid "" -"Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the " -"instance's references to those of its members that may be Python objects, " -"and set its pointers to those members to ``NULL``, as in the following " -"example::" -msgstr "" -"Umsetzungen von :c:member:`~PyTypeObject.tp_clear` sollten die Referenzen " -"der Instanz auf diejenigen ihrer Member fallen lassen, die Python-Objekte " -"sein können, und ihre Zeiger auf diese Member auf ``NULL`` setzen, wie im " -"folgenden Beispiel::" - -#: ../../c-api/typeobj.rst:1697 -msgid "" -"static int\n" -"local_clear(PyObject *op)\n" -"{\n" -" localobject *self = (localobject *) op;\n" -" Py_CLEAR(self->key);\n" -" Py_CLEAR(self->args);\n" -" Py_CLEAR(self->kw);\n" -" Py_CLEAR(self->dict);\n" -" return 0;\n" -"}" -msgstr "" -"static int\n" -"local_clear(PyObject *op)\n" -"{\n" -" localobject *self = (localobject *) op;\n" -" Py_CLEAR(self->key);\n" -" Py_CLEAR(self->args);\n" -" Py_CLEAR(self->kw);\n" -" Py_CLEAR(self->dict);\n" -" return 0;\n" -"}" - -#: ../../c-api/typeobj.rst:1708 -msgid "" -"The :c:func:`Py_CLEAR` macro should be used, because clearing references is " -"delicate: the reference to the contained object must not be released " -"(via :c:func:`Py_DECREF`) until after the pointer to the contained object is " -"set to ``NULL``. This is because releasing the reference may cause the " -"contained object to become trash, triggering a chain of reclamation activity " -"that may include invoking arbitrary Python code (due to finalizers, or " -"weakref callbacks, associated with the contained object). If it's possible " -"for such code to reference *self* again, it's important that the pointer to " -"the contained object be ``NULL`` at that time, so that *self* knows the " -"contained object can no longer be used. The :c:func:`Py_CLEAR` macro " -"performs the operations in a safe order." -msgstr "" -"Das Makro :c:func:`Py_CLEAR` sollte verwendet werden, weil das Leeren von " -"Referenzen heikel ist: Die Referenz auf das enthaltene Objekt darf erst dann " -"freigegeben werden (über :c:func:`Py_DECREF`), nachdem der Zeiger auf das " -"enthaltene Objekt auf ``NULL`` gesetzt wurde. Denn das Freigeben der " -"Referenz kann dazu führen, dass das enthaltene Objekt zu Müll wird, was eine " -"Kette von Aufräumvorgängen anstößt, die auch das Ausführen beliebigen Python-" -"Codes umfassen kann (durch Finalisierer oder Weakref-Callbacks des " -"enthaltenen Objekts). Kann solcher Code *self* erneut referenzieren, ist es " -"wichtig, dass der Zeiger auf das enthaltene Objekt zu diesem Zeitpunkt " -"``NULL`` ist, damit *self* weiß, dass das enthaltene Objekt nicht mehr " -"verwendet werden kann. Das Makro :c:func:`Py_CLEAR` führt die Schritte in " -"einer sicheren Reihenfolge aus." - -#: ../../c-api/typeobj.rst:1720 -msgid "" -"If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in " -"the :c:member:`~PyTypeObject.tp_flags` field, the clear function must " -"call :c:func:`PyObject_ClearManagedDict` like this::" -msgstr "" -"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` im " -"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, muss die clear-" -"Funktion :c:func:`PyObject_ClearManagedDict` so aufrufen::" - -#: ../../c-api/typeobj.rst:1724 -msgid "PyObject_ClearManagedDict((PyObject*)self);" -msgstr "PyObject_ClearManagedDict((PyObject*)self);" - -#: ../../c-api/typeobj.rst:1726 -msgid "" -"More information about Python's garbage collection scheme can be found in " -"section :ref:`supporting-cycle-detection`." -msgstr "" -"Mehr Informationen zum Verfahren der Speicherbereinigung in Python stehen im " -"Abschnitt :ref:`supporting-cycle-detection`." - -#: ../../c-api/typeobj.rst:1733 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_traverse` and " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag " -"bit, :c:member:`~PyTypeObject.tp_traverse`, " -"and :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type " -"if they are all zero in the subtype." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_traverse` und dem Flag-" -"Bit :c:macro:`Py_TPFLAGS_HAVE_GC` vererbt: Das Flag-" -"Bit, :c:member:`~PyTypeObject.tp_traverse` " -"und :c:member:`~PyTypeObject.tp_clear` werden alle vom Basistyp geerbt, wenn " -"sie im Untertyp alle null sind." - -#: ../../c-api/typeobj.rst:1747 -msgid "" -"An optional pointer to the rich comparison function, whose signature is::" -msgstr "" -"Ein wahlfreier Zeiger auf die Funktion für den erweiterten Vergleich, deren " -"Signatur lautet::" - -#: ../../c-api/typeobj.rst:1749 -msgid "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" -msgstr "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);" - -#: ../../c-api/typeobj.rst:1751 -msgid "" -"The first parameter is guaranteed to be an instance of the type that is " -"defined by :c:type:`PyTypeObject`." -msgstr "" -"Der erste Parameter ist garantiert eine Instanz des Typs, der " -"durch :c:type:`PyTypeObject` festgelegt ist." - -#: ../../c-api/typeobj.rst:1754 -msgid "" -"The function should return the result of the comparison (usually ``Py_True`` " -"or ``Py_False``). If the comparison is undefined, it must return " -"``Py_NotImplemented``, if another error occurred it must return ``NULL`` and " -"set an exception condition." -msgstr "" -"Die Funktion sollte das Ergebnis des Vergleichs zurückgeben (üblicherweise " -"``Py_True`` oder ``Py_False``). Ist der Vergleich undefiniert, muss sie " -"``Py_NotImplemented`` zurückgeben. Trat ein anderer Fehler auf, muss sie " -"``NULL`` zurückgeben und einen Ausnahmezustand setzen." - -#: ../../c-api/typeobj.rst:1759 -msgid "" -"The following constants are defined to be used as the third argument " -"for :c:member:`~PyTypeObject.tp_richcompare` and " -"for :c:func:`PyObject_RichCompare`:" -msgstr "" -"Die folgenden Konstanten sind festgelegt, um als drittes Argument " -"für :c:member:`~PyTypeObject.tp_richcompare` und " -"für :c:func:`PyObject_RichCompare` verwendet zu werden:" - -#: ../../c-api/typeobj.rst:1765 -msgid "Constant" -msgstr "Konstante" - -#: ../../c-api/typeobj.rst:1765 -msgid "Comparison" -msgstr "Vergleich" - -#: ../../c-api/typeobj.rst:1767 -msgid "``<``" -msgstr "``<``" - -#: ../../c-api/typeobj.rst:1769 -msgid "``<=``" -msgstr "``<=``" - -#: ../../c-api/typeobj.rst:1771 -msgid "``==``" -msgstr "``==``" - -#: ../../c-api/typeobj.rst:1773 -msgid "``!=``" -msgstr "``!=``" - -#: ../../c-api/typeobj.rst:1775 -msgid "``>``" -msgstr "``>``" - -#: ../../c-api/typeobj.rst:1777 -msgid "``>=``" -msgstr "``>=``" - -#: ../../c-api/typeobj.rst:1780 -msgid "" -"The following macro is defined to ease writing rich comparison functions:" -msgstr "" -"Das folgende Makro ist festgelegt, um das Schreiben von Funktionen für den " -"erweiterten Vergleich zu erleichtern:" - -#: ../../c-api/typeobj.rst:1784 -msgid "" -"Return ``Py_True`` or ``Py_False`` from the function, depending on the " -"result of a comparison. VAL_A and VAL_B must be orderable by C comparison " -"operators (for example, they may be C ints or floats). The third argument " -"specifies the requested operation, as for :c:func:`PyObject_RichCompare`." -msgstr "" -"Gibt je nach Ergebnis eines Vergleichs ``Py_True`` oder ``Py_False`` aus der " -"Funktion zurück. VAL_A und VAL_B müssen sich über die C-Vergleichsoperatoren " -"ordnen lassen (sie dürfen zum Beispiel C-ints oder -floats sein). Das dritte " -"Argument gibt den gewünschten Vorgang an, wie " -"bei :c:func:`PyObject_RichCompare`." - -#: ../../c-api/typeobj.rst:1790 -msgid "The returned value is a new :term:`strong reference`." -msgstr "" -"Der zurückgegebene Wert ist eine neue :term:`starke Referenz `." - -#: ../../c-api/typeobj.rst:1792 -msgid "On error, sets an exception and returns ``NULL`` from the function." -msgstr "" -"Im Fehlerfall setzt es eine Ausnahme und gibt ``NULL`` aus der Funktion " -"zurück." - -#: ../../c-api/typeobj.rst:1800 -msgid "" -"This field is inherited by subtypes together " -"with :c:member:`~PyTypeObject.tp_hash`: a subtype " -"inherits :c:member:`~PyTypeObject.tp_richcompare` " -"and :c:member:`~PyTypeObject.tp_hash` when the " -"subtype's :c:member:`~PyTypeObject.tp_richcompare` " -"and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``." -msgstr "" -"Dieses Feld wird von Untertypen gemeinsam " -"mit :c:member:`~PyTypeObject.tp_hash` vererbt: Ein Untertyp " -"erbt :c:member:`~PyTypeObject.tp_richcompare` " -"und :c:member:`~PyTypeObject.tp_hash`, " -"wenn :c:member:`~PyTypeObject.tp_richcompare` " -"und :c:member:`~PyTypeObject.tp_hash` des Untertyps beide ``NULL`` sind." - -#: ../../c-api/typeobj.rst:1807 -msgid "" -":c:data:`PyBaseObject_Type` provides " -"a :c:member:`~PyTypeObject.tp_richcompare` implementation, which may be " -"inherited. However, if only :c:member:`~PyTypeObject.tp_hash` is defined, " -"not even the inherited function is used and instances of the type will not " -"be able to participate in any comparisons." -msgstr "" -":c:data:`PyBaseObject_Type` stellt eine Umsetzung " -"von :c:member:`~PyTypeObject.tp_richcompare` bereit, die geerbt werden kann. " -"Ist allerdings nur :c:member:`~PyTypeObject.tp_hash` festgelegt, wird nicht " -"einmal die geerbte Funktion verwendet, und Instanzen des Typs können an " -"keinerlei Vergleichen teilnehmen." - -#: ../../c-api/typeobj.rst:1816 -msgid "" -"While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` " -"should be used instead, if at all possible." -msgstr "" -"Dieses Feld wird zwar weiterhin unterstützt, aber nach Möglichkeit sollte " -"stattdessen :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` verwendet werden." - -#: ../../c-api/typeobj.rst:1819 -msgid "" -"If the instances of this type are weakly referenceable, this field is " -"greater than zero and contains the offset in the instance structure of the " -"weak reference list head (ignoring the GC header, if present); this offset " -"is used by :c:func:`PyObject_ClearWeakRefs` and the ``PyWeakref_*`` " -"functions. The instance structure needs to include a field of " -"type :c:expr:`PyObject*` which is initialized to ``NULL``." -msgstr "" -"Sind die Instanzen dieses Typs schwach referenzierbar, ist dieses Feld " -"größer als null und enthält den Versatz des Kopfes der Liste schwacher " -"Referenzen in der Instanzstruktur (ohne den GC-Kopf, falls vorhanden). " -"Dieser Versatz wird von :c:func:`PyObject_ClearWeakRefs` und den " -"``PyWeakref_*``-Funktionen verwendet. Die Instanzstruktur muss ein Feld vom " -"Typ :c:expr:`PyObject*` enthalten, das auf ``NULL`` initialisiert wird." - -#: ../../c-api/typeobj.rst:1826 -msgid "" -"Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that " -"is the list head for weak references to the type object itself." -msgstr "" -"Verwechsle dieses Feld nicht mit :c:member:`~PyTypeObject.tp_weaklist`. Das " -"ist der Listenkopf für schwache Referenzen auf das Typobjekt selbst." - -#: ../../c-api/typeobj.rst:1829 -msgid "" -"It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit " -"and :c:member:`~PyTypeObject.tp_weaklistoffset`." -msgstr "" -"Es ist ein Fehler, sowohl das Bit :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` als " -"auch :c:member:`~PyTypeObject.tp_weaklistoffset` zu setzen." - -#: ../../c-api/typeobj.rst:1834 -msgid "" -"This field is inherited by subtypes, but see the rules listed below. A " -"subtype may override this offset; this means that the subtype uses a " -"different weak reference list head than the base type. Since the list head " -"is always found via :c:member:`~PyTypeObject.tp_weaklistoffset`, this should " -"not be a problem." -msgstr "" -"Dieses Feld wird an Untertypen vererbt, siehe aber die unten aufgeführten " -"Regeln. Ein Untertyp darf diesen Versatz übergehen. Das bedeutet, dass der " -"Untertyp einen anderen Kopf der Liste schwacher Referenzen verwendet als der " -"Basistyp. Da der Listenkopf immer " -"über :c:member:`~PyTypeObject.tp_weaklistoffset` gefunden wird, sollte das " -"kein Problem sein." - -#: ../../c-api/typeobj.rst:1841 -msgid "" -"If the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit is set in " -"the :c:member:`~PyTypeObject.tp_flags` field, " -"then :c:member:`~PyTypeObject.tp_weaklistoffset` will be set to a negative " -"value, to indicate that it is unsafe to use this field." -msgstr "" -"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` im " -"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, " -"wird :c:member:`~PyTypeObject.tp_weaklistoffset` auf einen negativen Wert " -"gesetzt, um anzuzeigen, dass es nicht gefahrlos verwendet werden kann." - -#: ../../c-api/typeobj.rst:1851 -msgid "" -"An optional pointer to a function that returns an :term:`iterator` for the " -"object. Its presence normally signals that the instances of this type " -"are :term:`iterable` (although sequences may be iterable without this " -"function)." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion, die einen :term:`Iterator " -"` für das Objekt zurückgibt. Sein Vorhandensein zeigt " -"normalerweise an, dass die Instanzen dieses Typs :term:`iterierbar " -"` sind (Sequenzen können allerdings auch ohne diese Funktion " -"iterierbar sein)." - -#: ../../c-api/typeobj.rst:1855 -msgid "This function has the same signature as :c:func:`PyObject_GetIter`::" -msgstr "Diese Funktion hat dieselbe Signatur wie :c:func:`PyObject_GetIter`::" - -#: ../../c-api/typeobj.rst:1857 -msgid "PyObject *tp_iter(PyObject *self);" -msgstr "PyObject *tp_iter(PyObject *self);" - -#: ../../c-api/typeobj.rst:1868 -msgid "" -"An optional pointer to a function that returns the next item in " -"an :term:`iterator`. The signature is::" -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion, die das nächste Element " -"eines :term:`Iterators ` zurückgibt. Die Signatur lautet::" - -#: ../../c-api/typeobj.rst:1871 -msgid "PyObject *tp_iternext(PyObject *self);" -msgstr "PyObject *tp_iternext(PyObject *self);" - -#: ../../c-api/typeobj.rst:1873 -msgid "" -"When the iterator is :term:`exhausted`, the ``tp_iternext`` function must " -"return ``NULL``; a :exc:`StopIteration` exception may or may not be set. " -"When another error occurs, it must return ``NULL`` too. The presence of " -"``tp_iternext`` signals that the instances of this type are iterators." -msgstr "" -"Ist der Iterator :term:`erschöpft `, muss die Funktion " -"``tp_iternext`` ``NULL`` zurückgeben. Eine :exc:`StopIteration`-Ausnahme " -"kann gesetzt sein oder auch nicht. Tritt ein anderer Fehler auf, muss sie " -"ebenfalls ``NULL`` zurückgeben. Das Vorhandensein von ``tp_iternext`` zeigt " -"an, dass die Instanzen dieses Typs Iteratoren sind." - -#: ../../c-api/typeobj.rst:1879 -msgid "" -"Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` " -"function, and that function should return the iterator instance itself (not " -"a new iterator instance)." -msgstr "" -"Iteratortypen sollten außerdem die " -"Funktion :c:member:`~PyTypeObject.tp_iter` festlegen, und diese Funktion " -"sollte die Iterator-Instanz selbst zurückgeben (keine neue Iterator-Instanz)." - -#: ../../c-api/typeobj.rst:1883 -msgid "This function has the same signature as :c:func:`PyIter_Next`." -msgstr "Diese Funktion hat dieselbe Signatur wie :c:func:`PyIter_Next`." - -#: ../../c-api/typeobj.rst:1894 -msgid "" -"An optional pointer to a static ``NULL``-terminated array " -"of :c:type:`PyMethodDef` structures, declaring regular methods of this type." -msgstr "" -"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " -"von :c:type:`PyMethodDef`-Strukturen, die die gewöhnlichen Methoden dieses " -"Typs deklarieren." - -#: ../../c-api/typeobj.rst:1897 -msgid "" -"For each entry in the array, an entry is added to the type's dictionary " -"(see :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor." -msgstr "" -"Für jeden Eintrag im Array wird dem Dictionary des Typs " -"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem " -"Methodendeskriptor hinzugefügt." - -#: ../../c-api/typeobj.rst:1902 -msgid "" -"This field is not inherited by subtypes (methods are inherited through a " -"different mechanism)." -msgstr "" -"Dieses Feld wird nicht an Untertypen vererbt (Methoden werden über einen " -"anderen Mechanismus vererbt)." - -#: ../../c-api/typeobj.rst:1910 -msgid "" -"An optional pointer to a static ``NULL``-terminated array " -"of :c:type:`PyMemberDef` structures, declaring regular data members (fields " -"or slots) of instances of this type." -msgstr "" -"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " -"von :c:type:`PyMemberDef`-Strukturen, die die gewöhnlichen Datenmember " -"(Felder oder Slots) von Instanzen dieses Typs deklarieren." - -#: ../../c-api/typeobj.rst:1914 -msgid "" -"For each entry in the array, an entry is added to the type's dictionary " -"(see :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor." -msgstr "" -"Für jeden Eintrag im Array wird dem Dictionary des Typs " -"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem Member-" -"Deskriptor hinzugefügt." - -#: ../../c-api/typeobj.rst:1919 -msgid "" -"This field is not inherited by subtypes (members are inherited through a " -"different mechanism)." -msgstr "" -"Dieses Feld wird nicht an Untertypen vererbt (Member werden über einen " -"anderen Mechanismus vererbt)." - -#: ../../c-api/typeobj.rst:1927 -msgid "" -"An optional pointer to a static ``NULL``-terminated array " -"of :c:type:`PyGetSetDef` structures, declaring computed attributes of " -"instances of this type." -msgstr "" -"Ein wahlfreier Zeiger auf ein statisches, ``NULL``-terminiertes Array " -"von :c:type:`PyGetSetDef`-Strukturen, die berechnete Attribute von Instanzen " -"dieses Typs deklarieren." - -#: ../../c-api/typeobj.rst:1930 -msgid "" -"For each entry in the array, an entry is added to the type's dictionary " -"(see :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor." -msgstr "" -"Für jeden Eintrag im Array wird dem Dictionary des Typs " -"(siehe :c:member:`~PyTypeObject.tp_dict` unten) ein Eintrag mit einem getset-" -"Deskriptor hinzugefügt." - -#: ../../c-api/typeobj.rst:1935 -msgid "" -"This field is not inherited by subtypes (computed attributes are inherited " -"through a different mechanism)." -msgstr "" -"Dieses Feld wird nicht an Untertypen vererbt (berechnete Attribute werden " -"über einen anderen Mechanismus vererbt)." - -#: ../../c-api/typeobj.rst:1941 -msgid "" -"An optional pointer to a base type from which type properties are " -"inherited. At this level, only single inheritance is supported; multiple " -"inheritance require dynamically creating a type object by calling the " -"metatype." -msgstr "" -"Ein wahlfreier Zeiger auf einen Basistyp, von dem Typeigenschaften geerbt " -"werden. Auf dieser Ebene wird nur Einfachvererbung unterstützt; " -"Mehrfachvererbung erfordert, ein Typobjekt dynamisch durch Aufruf des " -"Metatyps zu erzeugen." - -#: ../../c-api/typeobj.rst:1945 -msgid "For the corresponding slot ID, see :c:macro:`Py_tp_base`." -msgstr "Die zugehörige Slot-ID steht unter :c:macro:`Py_tp_base`." - -#: ../../c-api/typeobj.rst:1951 -msgid "" -"Slot initialization is subject to the rules of initializing globals. C99 " -"requires the initializers to be \"address constants\". Function designators " -"like :c:func:`PyType_GenericNew`, with implicit conversion to a pointer, are " -"valid C99 address constants." -msgstr "" -"Für das Initialisieren von Slots gelten die Regeln zum Initialisieren von " -"Globalen. C99 verlangt, dass die Initialisierer „Adresskonstanten“ sind. " -"Funktionsbezeichner wie :c:func:`PyType_GenericNew` sind mit ihrer " -"stillschweigenden Umwandlung in einen Zeiger gültige C99-Adresskonstanten." - -#: ../../c-api/typeobj.rst:1956 -msgid "" -"However, the unary '&' operator applied to a non-static variable " -"like :c:data:`PyBaseObject_Type` is not required to produce an address " -"constant. Compilers may support this (gcc does), MSVC does not. Both " -"compilers are strictly standard conforming in this particular behavior." -msgstr "" -"Der unäre Operator „&“, angewendet auf eine nicht statische Variable " -"wie :c:data:`PyBaseObject_Type`, muss dagegen keine Adresskonstante ergeben. " -"Compiler dürfen das unterstützen (gcc tut es), MSVC tut es nicht. Beide " -"Compiler halten sich in diesem Punkt streng an den Standard." - -#: ../../c-api/typeobj.rst:1962 -msgid "" -"Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the " -"extension module's init function." -msgstr "" -"Folglich sollte :c:member:`~PyTypeObject.tp_base` in der init-Funktion des " -"Erweiterungsmoduls gesetzt werden." - -#: ../../c-api/typeobj.rst:1967 -msgid "This field is not inherited by subtypes (obviously)." -msgstr "Dieses Feld wird (selbstverständlich) nicht an Untertypen vererbt." - -#: ../../c-api/typeobj.rst:1971 -msgid "" -"This field defaults to ``&PyBaseObject_Type`` (which to Python programmers " -"is known as the type :class:`object`)." -msgstr "" -"Dieses Feld ist auf ``&PyBaseObject_Type`` voreingestellt (was Python-" -"Programmierer als den Typ :class:`object` kennen)." - -#: ../../c-api/typeobj.rst:1977 -msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`." -msgstr "Das Dictionary des Typs wird hier von :c:func:`PyType_Ready` abgelegt." - -#: ../../c-api/typeobj.rst:1979 -msgid "" -"This field should normally be initialized to ``NULL`` before PyType_Ready is " -"called; it may also be initialized to a dictionary containing initial " -"attributes for the type. Once :c:func:`PyType_Ready` has initialized the " -"type, extra attributes for the type may be added to this dictionary only if " -"they don't correspond to overloaded operations " -"(like :meth:`~object.__add__`). Once initialization for the type has " -"finished, this field should be treated as read-only." -msgstr "" -"Dieses Feld sollte normalerweise auf ``NULL`` initialisiert werden, bevor " -"PyType_Ready aufgerufen wird. Es darf auch mit einem Dictionary mit " -"Anfangsattributen für den Typ initialisiert werden. " -"Sobald :c:func:`PyType_Ready` den Typ initialisiert hat, dürfen diesem " -"Dictionary nur dann weitere Attribute für den Typ hinzugefügt werden, wenn " -"sie nicht zu überladenen Operationen gehören (wie :meth:`~object.__add__`). " -"Ist die Initialisierung des Typs abgeschlossen, sollte dieses Feld als nur " -"lesbar behandelt werden." - -#: ../../c-api/typeobj.rst:1987 -msgid "" -"Some types may not store their dictionary in this slot. " -"Use :c:func:`PyType_GetDict` to retrieve the dictionary for an arbitrary " -"type." -msgstr "" -"Manche Typen legen ihr Dictionary nicht in diesem Slot ab. " -"Verwende :c:func:`PyType_GetDict`, um das Dictionary eines beliebigen Typs " -"zu holen." - -#: ../../c-api/typeobj.rst:1993 -msgid "" -"Internals detail: For static builtin types, this is always ``NULL``. " -"Instead, the dict for such types is stored on ``PyInterpreterState``. " -"Use :c:func:`PyType_GetDict` to get the dict for an arbitrary type." -msgstr "" -"Zu den Interna: Bei statischen integrierten Typen ist das immer ``NULL``. " -"Das Dictionary solcher Typen liegt stattdessen am ``PyInterpreterState``. " -"Verwende :c:func:`PyType_GetDict`, um das Dictionary eines beliebigen Typs " -"zu bekommen." - -#: ../../c-api/typeobj.rst:1999 -msgid "" -"This field is not inherited by subtypes (though the attributes defined in " -"here are inherited through a different mechanism)." -msgstr "" -"Dieses Feld wird nicht an Untertypen vererbt (die hier festgelegten " -"Attribute werden allerdings über einen anderen Mechanismus vererbt)." - -#: ../../c-api/typeobj.rst:2004 -msgid "" -"If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new " -"dictionary to it." -msgstr "" -"Ist dieses Feld ``NULL``, weist :c:func:`PyType_Ready` ihm ein neues " -"Dictionary zu." - -#: ../../c-api/typeobj.rst:2009 -msgid "" -"It is not safe to use :c:func:`PyDict_SetItem` on or otherwise " -"modify :c:member:`~PyTypeObject.tp_dict` with the dictionary C-API." -msgstr "" -"Es ist nicht gefahrlos möglich, :c:func:`PyDict_SetItem` " -"auf :c:member:`~PyTypeObject.tp_dict` anzuwenden oder es anderweitig über " -"die Dictionary-C-API zu ändern." - -#: ../../c-api/typeobj.rst:2017 -msgid "An optional pointer to a \"descriptor get\" function." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion zum Lesen eines Deskriptors " -"(„descriptor get“)." - -#: ../../c-api/typeobj.rst:2019 ../../c-api/typeobj.rst:2037 -#: ../../c-api/typeobj.rst:2103 ../../c-api/typeobj.rst:2135 -#: ../../c-api/typeobj.rst:2160 -msgid "The function signature is::" -msgstr "Die Signatur der Funktion lautet::" - -#: ../../c-api/typeobj.rst:2021 -msgid "PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" -msgstr "" -"PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);" - -#: ../../c-api/typeobj.rst:2034 -msgid "" -"An optional pointer to a function for setting and deleting a descriptor's " -"value." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion zum Setzen und Löschen des Werts " -"eines Deskriptors." - -#: ../../c-api/typeobj.rst:2039 -msgid "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" -msgstr "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);" - -#: ../../c-api/typeobj.rst:2041 -msgid "The *value* argument is set to ``NULL`` to delete the value." -msgstr "" -"Das Argument *value* wird auf ``NULL`` gesetzt, um den Wert zu löschen." - -#: ../../c-api/typeobj.rst:2052 -msgid "" -"While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_DICT` " -"should be used instead, if at all possible." -msgstr "" -"Dieses Feld wird zwar weiterhin unterstützt, aber nach Möglichkeit sollte " -"stattdessen :c:macro:`Py_TPFLAGS_MANAGED_DICT` verwendet werden." - -#: ../../c-api/typeobj.rst:2055 -msgid "" -"If the instances of this type have a dictionary containing instance " -"variables, this field is non-zero and contains the offset in the instances " -"of the type of the instance variable dictionary; this offset is used " -"by :c:func:`PyObject_GenericGetAttr`." -msgstr "" -"Haben die Instanzen dieses Typs ein Dictionary mit Instanzvariablen, ist " -"dieses Feld ungleich null und enthält den Versatz des Dictionarys der " -"Instanzvariablen in den Instanzen des Typs. Dieser Versatz wird " -"von :c:func:`PyObject_GenericGetAttr` verwendet." - -#: ../../c-api/typeobj.rst:2060 -msgid "" -"Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is " -"the dictionary for attributes of the type object itself." -msgstr "" -"Verwechsle dieses Feld nicht mit :c:member:`~PyTypeObject.tp_dict`. Das ist " -"das Dictionary für die Attribute des Typobjekts selbst." - -#: ../../c-api/typeobj.rst:2063 -msgid "" -"The value specifies the offset of the dictionary from the start of the " -"instance structure." -msgstr "" -"Der Wert gibt den Versatz des Dictionarys vom Anfang der Instanzstruktur an." - -#: ../../c-api/typeobj.rst:2065 -msgid "" -"The :c:member:`~PyTypeObject.tp_dictoffset` should be regarded as write-" -"only. To get the pointer to the dictionary " -"call :c:func:`PyObject_GenericGetDict`. " -"Calling :c:func:`PyObject_GenericGetDict` may need to allocate memory for " -"the dictionary, so it is may be more efficient to " -"call :c:func:`PyObject_GetAttr` when accessing an attribute on the object." -msgstr "" -":c:member:`~PyTypeObject.tp_dictoffset` sollte als nur schreibbar betrachtet " -"werden. Um den Zeiger auf das Dictionary zu bekommen, " -"rufe :c:func:`PyObject_GenericGetDict` auf. Der Aufruf " -"von :c:func:`PyObject_GenericGetDict` muss möglicherweise Speicher für das " -"Dictionary anfordern, deshalb kann es wirksamer " -"sein, :c:func:`PyObject_GetAttr` aufzurufen, wenn du auf ein Attribut des " -"Objekts zugreifst." - -#: ../../c-api/typeobj.rst:2071 -msgid "" -"It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit " -"and :c:member:`~PyTypeObject.tp_dictoffset`." -msgstr "" -"Es ist ein Fehler, sowohl das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` als " -"auch :c:member:`~PyTypeObject.tp_dictoffset` zu setzen." - -#: ../../c-api/typeobj.rst:2076 -msgid "" -"This field is inherited by subtypes. A subtype should not override this " -"offset; doing so could be unsafe, if C code tries to access the dictionary " -"at the previous offset. To properly support inheritance, " -"use :c:macro:`Py_TPFLAGS_MANAGED_DICT`." -msgstr "" -"Dieses Feld wird an Untertypen vererbt. Ein Untertyp sollte diesen Versatz " -"nicht übergehen. Das könnte gefährlich sein, wenn C-Code versucht, auf das " -"Dictionary beim bisherigen Versatz zuzugreifen. Um Vererbung richtig zu " -"unterstützen, verwende :c:macro:`Py_TPFLAGS_MANAGED_DICT`." - -#: ../../c-api/typeobj.rst:2083 -msgid "" -"This slot has no default. For :ref:`static types `, if the " -"field is ``NULL`` then no :attr:`~object.__dict__` gets created for " -"instances." -msgstr "" -"Dieser Slot hat keine Vorgabe. Bei :ref:`statischen Typen ` " -"wird für Instanzen kein :attr:`~object.__dict__` angelegt, wenn das Feld " -"``NULL`` ist." - -#: ../../c-api/typeobj.rst:2086 -msgid "" -"If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in " -"the :c:member:`~PyTypeObject.tp_flags` field, " -"then :c:member:`~PyTypeObject.tp_dictoffset` will be set to ``-1``, to " -"indicate that it is unsafe to use this field." -msgstr "" -"Ist das Bit :c:macro:`Py_TPFLAGS_MANAGED_DICT` im " -"Feld :c:member:`~PyTypeObject.tp_flags` gesetzt, " -"wird :c:member:`~PyTypeObject.tp_dictoffset` auf ``-1`` gesetzt, um " -"anzuzeigen, dass es nicht gefahrlos verwendet werden kann." - -#: ../../c-api/typeobj.rst:2096 -msgid "An optional pointer to an instance initialization function." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion zur Initialisierung von Instanzen." - -#: ../../c-api/typeobj.rst:2098 -msgid "" -"This function corresponds to the :meth:`~object.__init__` method of " -"classes. Like :meth:`!__init__`, it is possible to create an instance " -"without calling :meth:`!__init__`, and it is possible to reinitialize an " -"instance by calling its :meth:`!__init__` method again." -msgstr "" -"Diese Funktion entspricht der Methode :meth:`~object.__init__` von Klassen. " -"Wie bei :meth:`!__init__` lässt sich eine Instanz erzeugen, ohne :meth:`!" -"__init__` aufzurufen, und eine Instanz lässt sich neu initialisieren, indem " -"ihre Methode :meth:`!__init__` erneut aufgerufen wird." - -#: ../../c-api/typeobj.rst:2105 -msgid "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" -msgstr "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);" - -#: ../../c-api/typeobj.rst:2107 -msgid "" -"The self argument is the instance to be initialized; the *args* and *kwds* " -"arguments represent positional and keyword arguments of the call " -"to :meth:`~object.__init__`." -msgstr "" -"Das Argument self ist die zu initialisierende Instanz. Die Argumente *args* " -"und *kwds* stehen für die Positions- und Schlüsselwortargumente des Aufrufs " -"von :meth:`~object.__init__`." - -#: ../../c-api/typeobj.rst:2111 -msgid "" -"The :c:member:`~PyTypeObject.tp_init` function, if not ``NULL``, is called " -"when an instance is created normally by calling its type, after the " -"type's :c:member:`~PyTypeObject.tp_new` function has returned an instance of " -"the type. If the :c:member:`~PyTypeObject.tp_new` function returns an " -"instance of some other type that is not a subtype of the original type, " -"no :c:member:`~PyTypeObject.tp_init` function is called; " -"if :c:member:`~PyTypeObject.tp_new` returns an instance of a subtype of the " -"original type, the subtype's :c:member:`~PyTypeObject.tp_init` is called." -msgstr "" -"Die Funktion :c:member:`~PyTypeObject.tp_init` wird, sofern sie nicht " -"``NULL`` ist, aufgerufen, wenn eine Instanz auf gewöhnlichem Weg durch " -"Aufruf ihres Typs erzeugt wird, nachdem die " -"Funktion :c:member:`~PyTypeObject.tp_new` des Typs eine Instanz des Typs " -"zurückgegeben hat. Gibt die Funktion :c:member:`~PyTypeObject.tp_new` eine " -"Instanz eines anderen Typs zurück, der kein Untertyp des ursprünglichen Typs " -"ist, wird keine Funktion :c:member:`~PyTypeObject.tp_init` aufgerufen. " -"Gibt :c:member:`~PyTypeObject.tp_new` eine Instanz eines Untertyps des " -"ursprünglichen Typs zurück, wird :c:member:`~PyTypeObject.tp_init` des " -"Untertyps aufgerufen." - -#: ../../c-api/typeobj.rst:2118 -msgid "Returns ``0`` on success, ``-1`` and sets an exception on error." -msgstr "" -"Gibt bei Erfolg ``0`` zurück, im Fehlerfall ``-1``, und setzt eine Ausnahme." - -#: ../../c-api/typeobj.rst:2126 -msgid "" -"For :ref:`static types ` this field does not have a default." -msgstr "" -"Bei :ref:`statischen Typen ` hat dieses Feld keine Vorgabe." - -#: ../../c-api/typeobj.rst:2133 -msgid "An optional pointer to an instance allocation function." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion zur Speicheranforderung für " -"Instanzen." - -#: ../../c-api/typeobj.rst:2137 -msgid "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" -msgstr "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);" - -#: ../../c-api/typeobj.rst:2141 -msgid "" -"Static subtypes inherit this slot, which will " -"be :c:func:`PyType_GenericAlloc` if inherited from :class:`object`." -msgstr "" -"Statische Untertypen erben diesen Slot. Er " -"ist :c:func:`PyType_GenericAlloc`, wenn er von :class:`object` geerbt wird." - -#: ../../c-api/typeobj.rst:2144 ../../c-api/typeobj.rst:2215 -msgid ":ref:`Heap subtypes ` do not inherit this slot." -msgstr ":ref:`Heap-Untertypen ` erben diesen Slot nicht." - -#: ../../c-api/typeobj.rst:2148 -msgid "" -"For heap subtypes, this field is always set to :c:func:`PyType_GenericAlloc`." -msgstr "" -"Bei Heap-Untertypen ist dieses Feld immer auf :c:func:`PyType_GenericAlloc` " -"gesetzt." - -#: ../../c-api/typeobj.rst:2151 ../../c-api/typeobj.rst:2223 -msgid "For static subtypes, this slot is inherited (see above)." -msgstr "Bei statischen Untertypen wird dieser Slot vererbt (siehe oben)." - -#: ../../c-api/typeobj.rst:2158 -msgid "An optional pointer to an instance creation function." -msgstr "Ein wahlfreier Zeiger auf eine Funktion zum Erzeugen von Instanzen." - -#: ../../c-api/typeobj.rst:2162 -msgid "" -"PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" -msgstr "" -"PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);" - -#: ../../c-api/typeobj.rst:2164 -msgid "" -"The *subtype* argument is the type of the object being created; the *args* " -"and *kwds* arguments represent positional and keyword arguments of the call " -"to the type. Note that *subtype* doesn't have to equal the type " -"whose :c:member:`~PyTypeObject.tp_new` function is called; it may be a " -"subtype of that type (but not an unrelated type)." -msgstr "" -"Das Argument *subtype* ist der Typ des zu erzeugenden Objekts. Die Argumente " -"*args* und *kwds* stehen für die Positions- und Schlüsselwortargumente des " -"Aufrufs des Typs. Beachte, dass *subtype* nicht gleich dem Typ sein muss, " -"dessen Funktion :c:member:`~PyTypeObject.tp_new` aufgerufen wird. Es darf " -"ein Untertyp dieses Typs sein (aber kein unverwandter Typ)." - -#: ../../c-api/typeobj.rst:2170 -msgid "" -"The :c:member:`~PyTypeObject.tp_new` function should call ``subtype-" -">tp_alloc(subtype, nitems)`` to allocate space for the object, and then do " -"only as much further initialization as is absolutely necessary. " -"Initialization that can safely be ignored or repeated should be placed in " -"the :c:member:`~PyTypeObject.tp_init` handler. A good rule of thumb is that " -"for immutable types, all initialization should take place " -"in :c:member:`~PyTypeObject.tp_new`, while for mutable types, most " -"initialization should be deferred to :c:member:`~PyTypeObject.tp_init`." -msgstr "" -"Die Funktion :c:member:`~PyTypeObject.tp_new` sollte ``subtype-" -">tp_alloc(subtype, nitems)`` aufrufen, um Platz für das Objekt anzufordern, " -"und danach nur so viel weitere Initialisierung vornehmen, wie unbedingt " -"nötig ist. Initialisierung, die sich gefahrlos überspringen oder wiederholen " -"lässt, gehört in den Handler :c:member:`~PyTypeObject.tp_init`. Als " -"Faustregel gilt: Bei unveränderlichen Typen sollte alle Initialisierung " -"in :c:member:`~PyTypeObject.tp_new` stattfinden, bei veränderlichen Typen " -"sollte das meiste auf :c:member:`~PyTypeObject.tp_init` verschoben werden." - -#: ../../c-api/typeobj.rst:2178 -msgid "" -"Set the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag to disallow " -"creating instances of the type in Python." -msgstr "" -"Setze das Flag :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION`, um das Erzeugen " -"von Instanzen des Typs in Python zu verbieten." - -#: ../../c-api/typeobj.rst:2183 -msgid "" -"This field is inherited by subtypes, except it is not inherited " -"by :ref:`static types ` " -"whose :c:member:`~PyTypeObject.tp_base` is ``NULL`` or " -"``&PyBaseObject_Type``." -msgstr "" -"Dieses Feld wird an Untertypen vererbt, außer an :ref:`statische Typen " -"`, deren :c:member:`~PyTypeObject.tp_base` ``NULL`` oder " -"``&PyBaseObject_Type`` ist." - -#: ../../c-api/typeobj.rst:2189 -msgid "" -"For :ref:`static types ` this field has no default. This means " -"if the slot is defined as ``NULL``, the type cannot be called to create new " -"instances; presumably there is some other way to create instances, like a " -"factory function." -msgstr "" -"Bei :ref:`statischen Typen ` hat dieses Feld keine Vorgabe. " -"Das bedeutet: Ist der Slot als ``NULL`` festgelegt, lässt sich der Typ nicht " -"aufrufen, um neue Instanzen zu erzeugen. Vermutlich gibt es dann einen " -"anderen Weg, Instanzen zu erzeugen, etwa eine Factory-Funktion." - -#: ../../c-api/typeobj.rst:2199 -msgid "" -"An optional pointer to an instance deallocation function. Its signature is::" -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion zur Speicherfreigabe für Instanzen. " -"Ihre Signatur lautet::" - -#: ../../c-api/typeobj.rst:2201 -msgid "void tp_free(void *self);" -msgstr "void tp_free(void *self);" - -#: ../../c-api/typeobj.rst:2203 -msgid "" -"This function must free the memory allocated " -"by :c:member:`~PyTypeObject.tp_alloc`." -msgstr "" -"Diese Funktion muss den Speicher freigeben, " -"den :c:member:`~PyTypeObject.tp_alloc` angefordert hat." - -#: ../../c-api/typeobj.rst:2208 -msgid "" -"Static subtypes inherit this slot, which will be :c:func:`PyObject_Free` if " -"inherited from :class:`object`. Exception: If the type supports garbage " -"collection (i.e., the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set " -"in :c:member:`~PyTypeObject.tp_flags`) and it would " -"inherit :c:func:`PyObject_Free`, then this slot is not inherited but instead " -"defaults to :c:func:`PyObject_GC_Del`." -msgstr "" -"Statische Untertypen erben diesen Slot. Er ist :c:func:`PyObject_Free`, wenn " -"er von :class:`object` geerbt wird. Ausnahme: Unterstützt der Typ die " -"Speicherbereinigung (ist also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` " -"in :c:member:`~PyTypeObject.tp_flags` gesetzt) und würde " -"er :c:func:`PyObject_Free` erben, wird dieser Slot nicht vererbt, sondern " -"ist auf :c:func:`PyObject_GC_Del` voreingestellt." - -#: ../../c-api/typeobj.rst:2219 -msgid "" -"For :ref:`heap subtypes `, this slot defaults to a deallocator " -"suitable to match :c:func:`PyType_GenericAlloc` and the value of " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag." -msgstr "" -"Bei :ref:`Heap-Untertypen ` ist dieser Slot auf einen " -"Deallokator voreingestellt, der zu :c:func:`PyType_GenericAlloc` und zum " -"Wert des Flags :c:macro:`Py_TPFLAGS_HAVE_GC` passt." - -#: ../../c-api/typeobj.rst:2230 -msgid "An optional pointer to a function called by the garbage collector." -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion, die die Speicherbereinigung aufruft." - -#: ../../c-api/typeobj.rst:2232 -msgid "" -"The garbage collector needs to know whether a particular object is " -"collectible or not. Normally, it is sufficient to look at the object's " -"type's :c:member:`~PyTypeObject.tp_flags` field, and check " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit. But some types have a mixture " -"of statically and dynamically allocated instances, and the statically " -"allocated instances are not collectible. Such types should define this " -"function; it should return ``1`` for a collectible instance, and ``0`` for a " -"non-collectible instance. The signature is::" -msgstr "" -"Die Speicherbereinigung muss wissen, ob ein bestimmtes Objekt einsammelbar " -"ist oder nicht. Normalerweise genügt es, das " -"Feld :c:member:`~PyTypeObject.tp_flags` des Typs des Objekts anzusehen und " -"das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_GC` zu prüfen. Manche Typen haben " -"aber eine Mischung aus statisch und dynamisch angelegten Instanzen, und die " -"statisch angelegten Instanzen sind nicht einsammelbar. Solche Typen sollten " -"diese Funktion festlegen. Sie sollte ``1`` für eine einsammelbare und ``0`` " -"für eine nicht einsammelbare Instanz zurückgeben. Die Signatur lautet::" - -#: ../../c-api/typeobj.rst:2240 -msgid "int tp_is_gc(PyObject *self);" -msgstr "int tp_is_gc(PyObject *self);" - -#: ../../c-api/typeobj.rst:2242 -msgid "" -"(The only example of this are types themselves. The " -"metatype, :c:data:`PyType_Type`, defines this function to distinguish " -"between statically and :ref:`dynamically allocated types `.)" -msgstr "" -"(Das einzige Beispiel dafür sind die Typen selbst. Der " -"Metatyp :c:data:`PyType_Type` legt diese Funktion fest, um zwischen statisch " -"und :ref:`dynamisch angelegten Typen ` zu unterscheiden.)" - -#: ../../c-api/typeobj.rst:2252 -msgid "" -"This slot has no default. If this field is " -"``NULL``, :c:macro:`Py_TPFLAGS_HAVE_GC` is used as the functional equivalent." -msgstr "" -"Dieser Slot hat keine Vorgabe. Ist dieses Feld ``NULL``, " -"wird :c:macro:`Py_TPFLAGS_HAVE_GC` als funktionale Entsprechung verwendet." - -#: ../../c-api/typeobj.rst:2258 -msgid "Tuple of base types." -msgstr "Tupel der Basistypen." - -#: ../../c-api/typeobj.rst:2260 ../../c-api/typeobj.rst:2281 -msgid "" -"This field should be set to ``NULL`` and treated as read-only. Python will " -"fill it in when the type is :c:func:`initialized `." -msgstr "" -"Dieses Feld sollte auf ``NULL`` gesetzt und als nur lesbar behandelt werden. " -"Python füllt es, wenn der Typ :c:func:`initialisiert ` wird." - -#: ../../c-api/typeobj.rst:2263 -msgid "For the corresponding slot ID, see :c:macro:`Py_tp_bases`." -msgstr "Die zugehörige Slot-ID steht unter :c:macro:`Py_tp_bases`." - -#: ../../c-api/typeobj.rst:2267 -msgid "" -"Multiple inheritance does not work well for statically defined types. If you " -"set ``tp_bases`` to a tuple, Python will not raise an error, but some slots " -"will only be inherited from the first base." -msgstr "" -"Mehrfachvererbung funktioniert bei statisch festgelegten Typen nicht gut. " -"Setzt du ``tp_bases`` auf ein Tupel, löst Python zwar keinen Fehler aus, " -"manche Slots werden aber nur vom ersten Basistyp geerbt." - -#: ../../c-api/typeobj.rst:2273 ../../c-api/typeobj.rst:2296 -#: ../../c-api/typeobj.rst:2313 ../../c-api/typeobj.rst:2330 -#: ../../c-api/typeobj.rst:2346 -msgid "This field is not inherited." -msgstr "Dieses Feld wird nicht vererbt." - -#: ../../c-api/typeobj.rst:2278 -msgid "" -"Tuple containing the expanded set of base types, starting with the type " -"itself and ending with :class:`object`, in Method Resolution Order." -msgstr "" -"Tupel mit der aufgefalteten Menge der Basistypen, beginnend mit dem Typ " -"selbst und endend mit :class:`object`, in der Reihenfolge der " -"Methodenauflösung." - -#: ../../c-api/typeobj.rst:2286 -msgid "" -"This field is not inherited; it is calculated fresh " -"by :c:func:`PyType_Ready`." -msgstr "" -"Dieses Feld wird nicht vererbt. Es wird von :c:func:`PyType_Ready` neu " -"berechnet." - -#: ../../c-api/typeobj.rst:2292 -msgid "Unused. Internal use only." -msgstr "Unbenutzt. Nur für den internen Gebrauch." - -#: ../../c-api/typeobj.rst:2301 -msgid "" -"A collection of subclasses. Internal use only. May be an invalid pointer." -msgstr "" -"Eine Sammlung von Unterklassen. Nur für den internen Gebrauch. Kann ein " -"ungültiger Zeiger sein." - -#: ../../c-api/typeobj.rst:2303 -msgid "" -"To get a list of subclasses, call the Python " -"method :py:meth:`~type.__subclasses__`." -msgstr "" -"Um eine Liste der Unterklassen zu bekommen, rufe die Python-" -"Methode :py:meth:`~type.__subclasses__` auf." - -#: ../../c-api/typeobj.rst:2308 -msgid "" -"For some types, this field does not hold a valid :c:expr:`PyObject*`. The " -"type was changed to :c:expr:`void*` to indicate this." -msgstr "" -"Bei manchen Typen enthält dieses Feld keinen gültigen :c:expr:`PyObject*`. " -"Der Typ wurde zu :c:expr:`void*` geändert, um das anzuzeigen." - -#: ../../c-api/typeobj.rst:2318 -msgid "" -"Weak reference list head, for weak references to this type object. Not " -"inherited. Internal use only." -msgstr "" -"Kopf der Liste schwacher Referenzen, für schwache Referenzen auf dieses " -"Typobjekt. Wird nicht vererbt. Nur für den internen Gebrauch." - -#: ../../c-api/typeobj.rst:2323 -msgid "" -"Internals detail: For the static builtin types this is always ``NULL``, even " -"if weakrefs are added. Instead, the weakrefs for each are stored on " -"``PyInterpreterState``. Use the public C-API or the internal " -"``_PyObject_GET_WEAKREFS_LISTPTR()`` macro to avoid the distinction." -msgstr "" -"Zu den Interna: Bei den statischen integrierten Typen ist das immer " -"``NULL``, auch wenn schwache Referenzen hinzugefügt werden. Die schwachen " -"Referenzen jedes einzelnen liegen stattdessen am ``PyInterpreterState``. " -"Verwende die öffentliche C-API oder das interne Makro " -"``_PyObject_GET_WEAKREFS_LISTPTR()``, um dir diese Unterscheidung zu " -"ersparen." - -#: ../../c-api/typeobj.rst:2337 -msgid "" -"This field is deprecated. Use :c:member:`~PyTypeObject.tp_finalize` instead." -msgstr "" -"Dieses Feld ist veraltet. Verwende " -"stattdessen :c:member:`~PyTypeObject.tp_finalize`." - -#: ../../c-api/typeobj.rst:2342 -msgid "Used to index into the method cache. Internal use only." -msgstr "Dient als Index in den Methoden-Cache. Nur für den internen Gebrauch." - -#: ../../c-api/typeobj.rst:2353 -msgid "" -"An optional pointer to an instance finalization function. This is the C " -"implementation of the :meth:`~object.__del__` special method. Its signature " -"is::" -msgstr "" -"Ein wahlfreier Zeiger auf eine Funktion zur Finalisierung von Instanzen. Das " -"ist die C-Umsetzung der speziellen Methode :meth:`~object.__del__`. Ihre " -"Signatur lautet::" - -#: ../../c-api/typeobj.rst:2357 -msgid "void tp_finalize(PyObject *self);" -msgstr "void tp_finalize(PyObject *self);" - -#: ../../c-api/typeobj.rst:2359 -msgid "" -"The primary purpose of finalization is to perform any non-trivial cleanup " -"that must be performed before the object is destroyed, while the object and " -"any other objects it directly or indirectly references are still in a " -"consistent state. The finalizer is allowed to execute arbitrary Python code." -msgstr "" -"Der Hauptzweck der Finalisierung ist es, nicht triviale Aufräumarbeiten zu " -"erledigen, die vor der Zerstörung des Objekts stattfinden müssen, solange " -"das Objekt und alle Objekte, die es unmittelbar oder mittelbar referenziert, " -"noch in einem widerspruchsfreien Zustand sind. Der Finalisierer darf " -"beliebigen Python-Code ausführen." - -#: ../../c-api/typeobj.rst:2365 -msgid "" -"Before Python automatically finalizes an object, some of the object's direct " -"or indirect referents might have themselves been automatically finalized. " -"However, none of the referents will have been automatically cleared " -"(:c:member:`~PyTypeObject.tp_clear`) yet." -msgstr "" -"Bevor Python ein Objekt automatisch finalisiert, können einige der " -"unmittelbar oder mittelbar referenzierten Objekte ihrerseits bereits " -"automatisch finalisiert worden sein. Keines der referenzierten Objekte wird " -"zu diesem Zeitpunkt aber bereits automatisch geleert worden sein " -"(:c:member:`~PyTypeObject.tp_clear`)." - -#: ../../c-api/typeobj.rst:2370 -msgid "" -"Other non-finalized objects might still be using a finalized object, so the " -"finalizer must leave the object in a sane state (e.g., invariants are still " -"met)." -msgstr "" -"Andere, noch nicht finalisierte Objekte verwenden ein finalisiertes Objekt " -"möglicherweise noch, deshalb muss der Finalisierer das Objekt in einem " -"vernünftigen Zustand hinterlassen (die Invarianten müssen also weiterhin " -"gelten)." - -#: ../../c-api/typeobj.rst:2376 -msgid "" -"After Python automatically finalizes an object, Python might start " -"automatically clearing (:c:member:`~PyTypeObject.tp_clear`) the object and " -"its referents (direct and indirect). Cleared objects are not guaranteed to " -"be in a consistent state; a finalized object must be able to tolerate " -"cleared referents." -msgstr "" -"Nachdem Python ein Objekt automatisch finalisiert hat, beginnt es " -"möglicherweise damit, das Objekt und die von ihm referenzierten Objekte " -"(unmittelbar und mittelbar) automatisch zu leeren " -"(:c:member:`~PyTypeObject.tp_clear`). Dass geleerte Objekte in einem " -"widerspruchsfreien Zustand sind, ist nicht zugesichert. Ein finalisiertes " -"Objekt muss geleerte referenzierte Objekte verkraften." - -#: ../../c-api/typeobj.rst:2384 -msgid "" -"An object is not guaranteed to be automatically finalized before its " -"destructor (:c:member:`~PyTypeObject.tp_dealloc`) is called. It is " -"recommended to call :c:func:`PyObject_CallFinalizerFromDealloc` at the " -"beginning of :c:member:`!tp_dealloc` to guarantee that the object is always " -"finalized before destruction." -msgstr "" -"Dass ein Objekt automatisch finalisiert wird, bevor sein Destruktor " -"(:c:member:`~PyTypeObject.tp_dealloc`) aufgerufen wird, ist nicht " -"zugesichert. Es wird empfohlen, am Anfang von :c:member:`!" -"tp_dealloc` :c:func:`PyObject_CallFinalizerFromDealloc` aufzurufen, damit " -"das Objekt vor der Zerstörung in jedem Fall finalisiert ist." - -#: ../../c-api/typeobj.rst:2392 -msgid "" -"The :c:member:`~PyTypeObject.tp_finalize` function can be called from any " -"thread, although the :term:`GIL` will be held." -msgstr "" -"Die Funktion :c:member:`~PyTypeObject.tp_finalize` darf aus jedem Thread " -"aufgerufen werden, der :term:`GIL` wird dabei allerdings gehalten." - -#: ../../c-api/typeobj.rst:2397 -msgid "" -"The :c:member:`!tp_finalize` function can be called during shutdown, after " -"some global variables have been deleted. See the documentation of " -"the :meth:`~object.__del__` method for details." -msgstr "" -"Die Funktion :c:member:`!tp_finalize` kann beim Herunterfahren aufgerufen " -"werden, nachdem einige globale Variablen bereits gelöscht wurden. " -"Einzelheiten stehen in der Dokumentation zur Methode :meth:`~object.__del__`." - -#: ../../c-api/typeobj.rst:2401 -msgid "" -"When Python finalizes an object, it behaves like the following algorithm:" -msgstr "" -"Wenn Python ein Objekt finalisiert, verhält es sich wie der folgende " -"Algorithmus:" - -#: ../../c-api/typeobj.rst:2403 -msgid "" -"Python might mark the object as *finalized*. Currently, Python always marks " -"objects whose type supports garbage collection (i.e., " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is set " -"in :c:member:`~PyTypeObject.tp_flags`) and never marks other types of " -"objects; this might change in a future version." -msgstr "" -"Python markiert das Objekt möglicherweise als *finalisiert*. Derzeit " -"markiert Python immer Objekte, deren Typ die Speicherbereinigung unterstützt " -"(bei denen also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` " -"in :c:member:`~PyTypeObject.tp_flags` gesetzt ist), und nie andere Arten von " -"Objekten. Das kann sich in einer künftigen Version ändern." - -#: ../../c-api/typeobj.rst:2408 -msgid "" -"If the object is not marked as *finalized* and its :c:member:`!tp_finalize` " -"finalizer function is non-``NULL``, the finalizer function is called." -msgstr "" -"Ist das Objekt nicht als *finalisiert* markiert und ist seine " -"Finalisiererfunktion :c:member:`!tp_finalize` ungleich ``NULL``, wird die " -"Finalisiererfunktion aufgerufen." - -#: ../../c-api/typeobj.rst:2411 -msgid "" -"If the finalizer function was called and the finalizer made the object " -"reachable (i.e., there is a reference to the object and it is not a member " -"of a :term:`cyclic isolate`), then the finalizer is said to have " -"*resurrected* the object. It is unspecified whether the finalizer can also " -"resurrect the object by adding a new reference to the object that does not " -"make it reachable, i.e., the object is (still) a member of a cyclic isolate." -msgstr "" -"Wurde die Finalisiererfunktion aufgerufen und hat der Finalisierer das " -"Objekt wieder erreichbar gemacht (besteht also eine Referenz darauf und ist " -"es nicht Teil eines :term:`zyklischen Isolats `), sagt man, " -"der Finalisierer habe das Objekt *wieder auferstehen lassen*. Es ist nicht " -"festgelegt, ob der Finalisierer das Objekt auch dadurch auferstehen lassen " -"kann, dass er eine neue Referenz darauf hinzufügt, die es nicht erreichbar " -"macht, das Objekt also (weiterhin) Teil eines zyklischen Isolats ist." - -#: ../../c-api/typeobj.rst:2418 -msgid "" -"If the finalizer resurrected the object, the object's pending destruction is " -"canceled and the object's *finalized* mark might be removed if present. " -"Currently, Python never removes the *finalized* mark; this might change in a " -"future version." -msgstr "" -"Hat der Finalisierer das Objekt wieder auferstehen lassen, wird die " -"anstehende Zerstörung des Objekts abgebrochen, und die Markierung " -"*finalisiert* wird möglicherweise entfernt, sofern vorhanden. Derzeit " -"entfernt Python die Markierung *finalisiert* nie. Das kann sich in einer " -"künftigen Version ändern." - -#: ../../c-api/typeobj.rst:2423 -msgid "" -"*Automatic finalization* refers to any finalization performed by Python " -"except via calls to :c:func:`PyObject_CallFinalizer` " -"or :c:func:`PyObject_CallFinalizerFromDealloc`. No guarantees are made " -"about when, if, or how often an object is automatically finalized, except:" -msgstr "" -"*Automatische Finalisierung* bezeichnet jede Finalisierung, die Python " -"vornimmt, außer über Aufrufe von :c:func:`PyObject_CallFinalizer` " -"oder :c:func:`PyObject_CallFinalizerFromDealloc`. Darüber, wann, ob und wie " -"oft ein Objekt automatisch finalisiert wird, werden keine Zusagen gemacht, " -"außer:" - -#: ../../c-api/typeobj.rst:2428 -msgid "" -"Python will not automatically finalize an object if it is reachable, i.e., " -"there is a reference to it and it is not a member of a :term:`cyclic " -"isolate`." -msgstr "" -"Python finalisiert ein Objekt nicht automatisch, wenn es erreichbar ist, " -"also wenn eine Referenz darauf besteht und es nicht Teil " -"eines :term:`zyklischen Isolats ` ist." - -#: ../../c-api/typeobj.rst:2431 -msgid "" -"Python will not automatically finalize an object if finalizing it would not " -"mark the object as *finalized*. Currently, this applies to objects whose " -"type does not support garbage collection, i.e., " -"the :c:macro:`Py_TPFLAGS_HAVE_GC` flag is not set. Such objects can still " -"be manually finalized by calling :c:func:`PyObject_CallFinalizer` " -"or :c:func:`PyObject_CallFinalizerFromDealloc`." -msgstr "" -"Python finalisiert ein Objekt nicht automatisch, wenn das Finalisieren das " -"Objekt nicht als *finalisiert* markieren würde. Derzeit trifft das auf " -"Objekte zu, deren Typ die Speicherbereinigung nicht unterstützt, bei denen " -"also das Flag :c:macro:`Py_TPFLAGS_HAVE_GC` nicht gesetzt ist. Solche " -"Objekte lassen sich weiterhin von Hand finalisieren, " -"indem :c:func:`PyObject_CallFinalizer` " -"oder :c:func:`PyObject_CallFinalizerFromDealloc` aufgerufen wird." - -#: ../../c-api/typeobj.rst:2437 -msgid "" -"Python will not automatically finalize any two members of a :term:`cyclic " -"isolate` concurrently." -msgstr "" -"Python finalisiert nie zwei Mitglieder eines :term:`zyklischen Isolats " -"` gleichzeitig automatisch." - -#: ../../c-api/typeobj.rst:2439 -msgid "" -"Python will not automatically finalize an object after it has automatically " -"cleared (:c:member:`~PyTypeObject.tp_clear`) the object." -msgstr "" -"Python finalisiert ein Objekt nicht automatisch, nachdem es das Objekt " -"automatisch geleert hat (:c:member:`~PyTypeObject.tp_clear`)." - -#: ../../c-api/typeobj.rst:2441 -msgid "" -"If an object is a member of a :term:`cyclic isolate`, Python will not " -"automatically finalize it after automatically clearing " -"(see :c:member:`~PyTypeObject.tp_clear`) any other member." -msgstr "" -"Ist ein Objekt Teil eines :term:`zyklischen Isolats `, " -"finalisiert Python es nicht automatisch, nachdem es irgendein anderes " -"Mitglied automatisch geleert hat (siehe :c:member:`~PyTypeObject.tp_clear`)." - -#: ../../c-api/typeobj.rst:2444 -msgid "" -"Python will automatically finalize every member of a :term:`cyclic isolate` " -"before it automatically clears (see :c:member:`~PyTypeObject.tp_clear`) any " -"of them." -msgstr "" -"Python finalisiert jedes Mitglied eines :term:`zyklischen Isolats ` automatisch, bevor es irgendeines davon automatisch leert " -"(siehe :c:member:`~PyTypeObject.tp_clear`)." - -#: ../../c-api/typeobj.rst:2447 -msgid "" -"If Python is going to automatically clear an object " -"(:c:member:`~PyTypeObject.tp_clear`), it will automatically finalize the " -"object first." -msgstr "" -"Will Python ein Objekt automatisch leeren " -"(:c:member:`~PyTypeObject.tp_clear`), finalisiert es das Objekt vorher " -"automatisch." - -#: ../../c-api/typeobj.rst:2451 -msgid "" -"Python currently only automatically finalizes objects that are members of " -"a :term:`cyclic isolate`, but future versions might finalize objects " -"regularly before their destruction." -msgstr "" -"CPython finalisiert derzeit nur Objekte automatisch, die Teil " -"eines :term:`zyklischen Isolats ` sind. Künftige Versionen " -"könnten Objekte aber regelmäßig vor ihrer Zerstörung finalisieren." - -#: ../../c-api/typeobj.rst:2455 -msgid "" -"To manually finalize an object, do not call this function directly; " -"call :c:func:`PyObject_CallFinalizer` " -"or :c:func:`PyObject_CallFinalizerFromDealloc` instead." -msgstr "" -"Um ein Objekt von Hand zu finalisieren, rufe diese Funktion nicht " -"unmittelbar auf. Rufe stattdessen :c:func:`PyObject_CallFinalizer` " -"oder :c:func:`PyObject_CallFinalizerFromDealloc` auf." - -#: ../../c-api/typeobj.rst:2459 -msgid "" -":c:member:`~PyTypeObject.tp_finalize` should leave the current exception " -"status unchanged. The recommended way to write a non-trivial finalizer is " -"to back up the exception at the beginning by " -"calling :c:func:`PyErr_GetRaisedException` and restore the exception at the " -"end by calling :c:func:`PyErr_SetRaisedException`. If an exception is " -"encountered in the middle of the finalizer, log and clear it " -"with :c:func:`PyErr_WriteUnraisable` or :c:func:`PyErr_FormatUnraisable`. " -"For example::" -msgstr "" -":c:member:`~PyTypeObject.tp_finalize` sollte den aktuellen Ausnahmezustand " -"unverändert lassen. Der empfohlene Weg, einen nicht trivialen Finalisierer " -"zu schreiben, ist, die Ausnahme am Anfang " -"mit :c:func:`PyErr_GetRaisedException` zu sichern und am Ende " -"mit :c:func:`PyErr_SetRaisedException` wiederherzustellen. Stößt du mitten " -"im Finalisierer auf eine Ausnahme, protokolliere und lösche sie " -"mit :c:func:`PyErr_WriteUnraisable` oder :c:func:`PyErr_FormatUnraisable`. " -"Zum Beispiel::" - -#: ../../c-api/typeobj.rst:2468 -msgid "" -"static void\n" -"foo_finalize(PyObject *self)\n" -"{\n" -" // Save the current exception, if any.\n" -" PyObject *exc = PyErr_GetRaisedException();\n" -"\n" -" // ...\n" -"\n" -" if (do_something_that_might_raise() != success_indicator) {\n" -" PyErr_WriteUnraisable(self);\n" -" goto done;\n" -" }\n" -"\n" -"done:\n" -" // Restore the saved exception. This silently discards any exception\n" -" // raised above, so be sure to call PyErr_WriteUnraisable first if\n" -" // necessary.\n" -" PyErr_SetRaisedException(exc);\n" -"}" -msgstr "" -"static void\n" -"foo_finalize(PyObject *self)\n" -"{\n" -" // Save the current exception, if any.\n" -" PyObject *exc = PyErr_GetRaisedException();\n" -"\n" -" // ...\n" -"\n" -" if (do_something_that_might_raise() != success_indicator) {\n" -" PyErr_WriteUnraisable(self);\n" -" goto done;\n" -" }\n" -"\n" -"done:\n" -" // Restore the saved exception. This silently discards any exception\n" -" // raised above, so be sure to call PyErr_WriteUnraisable first if\n" -" // necessary.\n" -" PyErr_SetRaisedException(exc);\n" -"}" - -#: ../../c-api/typeobj.rst:2496 -msgid "" -"Before version 3.8 it was necessary to set " -"the :c:macro:`Py_TPFLAGS_HAVE_FINALIZE` flags bit in order for this field to " -"be used. This is no longer required." -msgstr "" -"Vor Version 3.8 musste das Flag-Bit :c:macro:`Py_TPFLAGS_HAVE_FINALIZE` " -"gesetzt sein, damit dieses Feld verwendet wurde. Das ist nicht mehr nötig." - -#: ../../c-api/typeobj.rst:2502 -msgid ":pep:`442`: \"Safe object finalization\"" -msgstr ":pep:`442`: „Safe object finalization“" - -#: ../../c-api/typeobj.rst:2505 -msgid ":c:func:`PyObject_CallFinalizer`" -msgstr ":c:func:`PyObject_CallFinalizer`" - -#: ../../c-api/typeobj.rst:2506 -msgid ":c:func:`PyObject_CallFinalizerFromDealloc`" -msgstr ":c:func:`PyObject_CallFinalizerFromDealloc`" - -#: ../../c-api/typeobj.rst:2513 -msgid "" -"A :ref:`vectorcall function ` to use for calls of this type " -"object (rather than instances). In other words, ``tp_vectorcall`` can be " -"used to optimize ``type.__call__``, which typically returns a new instance " -"of *type*." -msgstr "" -"Eine :ref:`vectorcall-Funktion `, die für Aufrufe dieses " -"Typobjekts (nicht seiner Instanzen) verwendet wird. Mit anderen Worten lässt " -"sich über ``tp_vectorcall`` ``type.__call__`` optimieren, das üblicherweise " -"eine neue Instanz von *type* zurückgibt." - -#: ../../c-api/typeobj.rst:2518 -msgid "" -"As with any vectorcall function, if ``tp_vectorcall`` is ``NULL``, the " -"*tp_call* protocol (``Py_TYPE(type)->tp_call``) is used instead." -msgstr "" -"Wie bei jeder vectorcall-Funktion wird, wenn ``tp_vectorcall`` ``NULL`` ist, " -"stattdessen das *tp_call*-Protokoll (``Py_TYPE(type)->tp_call``) verwendet." - -#: ../../c-api/typeobj.rst:2523 -msgid "" -"The :ref:`vectorcall protocol ` requires that the vectorcall " -"function has the same behavior as the corresponding ``tp_call``. This means " -"that ``type->tp_vectorcall`` must match the behavior of ``Py_TYPE(type)-" -">tp_call``." -msgstr "" -"Das :ref:`vectorcall-Protokoll ` verlangt, dass die vectorcall-" -"Funktion sich genauso verhält wie das zugehörige ``tp_call``. Das bedeutet, " -"dass ``type->tp_vectorcall`` zum Verhalten von ``Py_TYPE(type)->tp_call`` " -"passen muss." - -#: ../../c-api/typeobj.rst:2528 -msgid "" -"Specifically, if *type* uses the default metaclass, ``type->tp_vectorcall`` " -"must behave the same as :c:expr:`PyType_Type->tp_call`, which:" -msgstr "" -"Verwendet *type* die voreingestellte Metaklasse, muss sich ``type-" -">tp_vectorcall`` insbesondere genauso verhalten wie :c:expr:`PyType_Type-" -">tp_call`, das:" - -#: ../../c-api/typeobj.rst:2532 -msgid "calls ``type->tp_new``," -msgstr "``type->tp_new`` aufruft," - -#: ../../c-api/typeobj.rst:2534 -msgid "" -"if the result is a subclass of *type*, calls ``type->tp_init`` on the result " -"of ``tp_new``, and" -msgstr "" -"``type->tp_init`` auf dem Ergebnis von ``tp_new`` aufruft, wenn das Ergebnis " -"eine Unterklasse von *type* ist, und" - -#: ../../c-api/typeobj.rst:2537 -msgid "returns the result of ``tp_new``." -msgstr "das Ergebnis von ``tp_new`` zurückgibt." - -#: ../../c-api/typeobj.rst:2539 -msgid "" -"Typically, ``tp_vectorcall`` is overridden to optimize this process for " -"specific :c:member:`~PyTypeObject.tp_new` " -"and :c:member:`~PyTypeObject.tp_init`. When doing this for user-subclassable " -"types, note that both can be overridden (using :py:func:`~object.__new__` " -"and :py:func:`~object.__init__`, respectively)." -msgstr "" -"Üblicherweise wird ``tp_vectorcall`` übergangen, um diesen Ablauf für " -"bestimmte :c:member:`~PyTypeObject.tp_new` " -"und :c:member:`~PyTypeObject.tp_init` zu optimieren. Tust du das bei Typen, " -"von denen Nutzer Unterklassen bilden können, beachte, dass beide übergangen " -"werden können (über :py:func:`~object.__new__` " -"beziehungsweise :py:func:`~object.__init__`)." - -#: ../../c-api/typeobj.rst:2550 -msgid "This field is never inherited." -msgstr "Dieses Feld wird nie vererbt." - -#: ../../c-api/typeobj.rst:2552 -msgid "(the field exists since 3.8 but it's only used since 3.9)" -msgstr "(das Feld gibt es seit 3.8, verwendet wird es aber erst seit 3.9)" - -#: ../../c-api/typeobj.rst:2557 -msgid "Internal. Do not use." -msgstr "Intern. Nicht verwenden." - -#: ../../c-api/typeobj.rst:2565 -msgid "Static Types" -msgstr "Statische Typen" - -#: ../../c-api/typeobj.rst:2567 -msgid "" -"Traditionally, types defined in C code are *static*, that is, a " -"static :c:type:`PyTypeObject` structure is defined directly in code and " -"initialized using :c:func:`PyType_Ready`." -msgstr "" -"Herkömmlich sind Typen, die in C-Code festgelegt werden, *statisch*, das " -"heißt: Eine statische :c:type:`PyTypeObject`-Struktur wird unmittelbar im " -"Code festgelegt und über :c:func:`PyType_Ready` initialisiert." - -#: ../../c-api/typeobj.rst:2571 -msgid "" -"This results in types that are limited relative to types defined in Python:" -msgstr "" -"Daraus ergeben sich Typen, die gegenüber in Python festgelegten Typen " -"eingeschränkt sind:" - -#: ../../c-api/typeobj.rst:2573 -msgid "" -"Static types are limited to one base, i.e. they cannot use multiple " -"inheritance." -msgstr "" -"Statische Typen sind auf einen Basistyp beschränkt, können also keine " -"Mehrfachvererbung nutzen." - -#: ../../c-api/typeobj.rst:2575 -msgid "" -"Static type objects (but not necessarily their instances) are immutable. It " -"is not possible to add or modify the type object's attributes from Python." -msgstr "" -"Statische Typobjekte (nicht unbedingt aber ihre Instanzen) sind " -"unveränderlich. Die Attribute des Typobjekts lassen sich aus Python heraus " -"weder hinzufügen noch ändern." - -#: ../../c-api/typeobj.rst:2577 -msgid "" -"Static type objects are shared across :ref:`sub-interpreters `, so they should not include any subinterpreter-" -"specific state." -msgstr "" -"Statische Typobjekte werden von allen :ref:`Unterinterpretern ` gemeinsam genutzt, sie sollten deshalb keinen Zustand " -"enthalten, der einem einzelnen Unterinterpreter eigen ist." - -#: ../../c-api/typeobj.rst:2581 -msgid "" -"Also, since :c:type:`PyTypeObject` is only part of the :ref:`Limited API " -"` as an opaque struct, any extension modules using static " -"types must be compiled for a specific Python minor version." -msgstr "" -"Da :c:type:`PyTypeObject` außerdem nur als undurchsichtige Struktur Teil " -"der :ref:`Limited API ` ist, müssen Erweiterungsmodule, die " -"statische Typen verwenden, für eine bestimmte Python-Nebenversion kompiliert " -"werden." - -#: ../../c-api/typeobj.rst:2589 -msgid "Heap Types" -msgstr "Heap-Typen" - -#: ../../c-api/typeobj.rst:2591 -msgid "" -"An alternative to :ref:`static types ` is *heap-allocated " -"types*, or *heap types* for short, which correspond closely to classes " -"created by Python's ``class`` statement. Heap types have " -"the :c:macro:`Py_TPFLAGS_HEAPTYPE` flag set." -msgstr "" -"Eine Alternative zu :ref:`statischen Typen ` sind *auf dem " -"Heap angelegte Typen*, kurz *Heap-Typen*, die den Klassen, die Pythons " -"``class``-Anweisung erzeugt, sehr nahekommen. Bei Heap-Typen ist das " -"Flag :c:macro:`Py_TPFLAGS_HEAPTYPE` gesetzt." - -#: ../../c-api/typeobj.rst:2596 -msgid "" -"This is done by filling a :c:type:`PyType_Spec` structure and " -"calling :c:func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:`PyType_FromModuleAndSpec`, " -"or :c:func:`PyType_FromMetaclass`." -msgstr "" -"Das geschieht, indem eine :c:type:`PyType_Spec`-Struktur gefüllt " -"und :c:func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:`PyType_FromModuleAndSpec` " -"oder :c:func:`PyType_FromMetaclass` aufgerufen wird." - -#: ../../c-api/typeobj.rst:2604 -msgid "Number Object Structures" -msgstr "Strukturen für Zahlenobjekte" - -#: ../../c-api/typeobj.rst:2608 -msgid "" -"This structure holds pointers to the functions which an object uses to " -"implement the number protocol. Each function is used by the function of " -"similar name documented in the :ref:`number` section." -msgstr "" -"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " -"Zahlenprotokoll umsetzt. Jede Funktion wird von der gleichnamigen Funktion " -"verwendet, die im Abschnitt :ref:`number` dokumentiert ist." - -#: ../../c-api/typeobj.rst:2614 ../../c-api/typeobj.rst:3086 -msgid "Here is the structure definition::" -msgstr "Hier die Strukturdefinition::" - -#: ../../c-api/typeobj.rst:2616 -msgid "" -"typedef struct {\n" -" binaryfunc nb_add;\n" -" binaryfunc nb_subtract;\n" -" binaryfunc nb_multiply;\n" -" binaryfunc nb_remainder;\n" -" binaryfunc nb_divmod;\n" -" ternaryfunc nb_power;\n" -" unaryfunc nb_negative;\n" -" unaryfunc nb_positive;\n" -" unaryfunc nb_absolute;\n" -" inquiry nb_bool;\n" -" unaryfunc nb_invert;\n" -" binaryfunc nb_lshift;\n" -" binaryfunc nb_rshift;\n" -" binaryfunc nb_and;\n" -" binaryfunc nb_xor;\n" -" binaryfunc nb_or;\n" -" unaryfunc nb_int;\n" -" void *nb_reserved;\n" -" unaryfunc nb_float;\n" -"\n" -" binaryfunc nb_inplace_add;\n" -" binaryfunc nb_inplace_subtract;\n" -" binaryfunc nb_inplace_multiply;\n" -" binaryfunc nb_inplace_remainder;\n" -" ternaryfunc nb_inplace_power;\n" -" binaryfunc nb_inplace_lshift;\n" -" binaryfunc nb_inplace_rshift;\n" -" binaryfunc nb_inplace_and;\n" -" binaryfunc nb_inplace_xor;\n" -" binaryfunc nb_inplace_or;\n" -"\n" -" binaryfunc nb_floor_divide;\n" -" binaryfunc nb_true_divide;\n" -" binaryfunc nb_inplace_floor_divide;\n" -" binaryfunc nb_inplace_true_divide;\n" -"\n" -" unaryfunc nb_index;\n" -"\n" -" binaryfunc nb_matrix_multiply;\n" -" binaryfunc nb_inplace_matrix_multiply;\n" -"} PyNumberMethods;" -msgstr "" -"typedef struct {\n" -" binaryfunc nb_add;\n" -" binaryfunc nb_subtract;\n" -" binaryfunc nb_multiply;\n" -" binaryfunc nb_remainder;\n" -" binaryfunc nb_divmod;\n" -" ternaryfunc nb_power;\n" -" unaryfunc nb_negative;\n" -" unaryfunc nb_positive;\n" -" unaryfunc nb_absolute;\n" -" inquiry nb_bool;\n" -" unaryfunc nb_invert;\n" -" binaryfunc nb_lshift;\n" -" binaryfunc nb_rshift;\n" -" binaryfunc nb_and;\n" -" binaryfunc nb_xor;\n" -" binaryfunc nb_or;\n" -" unaryfunc nb_int;\n" -" void *nb_reserved;\n" -" unaryfunc nb_float;\n" -"\n" -" binaryfunc nb_inplace_add;\n" -" binaryfunc nb_inplace_subtract;\n" -" binaryfunc nb_inplace_multiply;\n" -" binaryfunc nb_inplace_remainder;\n" -" ternaryfunc nb_inplace_power;\n" -" binaryfunc nb_inplace_lshift;\n" -" binaryfunc nb_inplace_rshift;\n" -" binaryfunc nb_inplace_and;\n" -" binaryfunc nb_inplace_xor;\n" -" binaryfunc nb_inplace_or;\n" -"\n" -" binaryfunc nb_floor_divide;\n" -" binaryfunc nb_true_divide;\n" -" binaryfunc nb_inplace_floor_divide;\n" -" binaryfunc nb_inplace_true_divide;\n" -"\n" -" unaryfunc nb_index;\n" -"\n" -" binaryfunc nb_matrix_multiply;\n" -" binaryfunc nb_inplace_matrix_multiply;\n" -"} PyNumberMethods;" - -#: ../../c-api/typeobj.rst:2661 -msgid "" -"Binary and ternary functions must check the type of all their operands, and " -"implement the necessary conversions (at least one of the operands is an " -"instance of the defined type). If the operation is not defined for the " -"given operands, binary and ternary functions must return " -"``Py_NotImplemented``, if another error occurred they must return ``NULL`` " -"and set an exception." -msgstr "" -"Binäre und ternäre Funktionen müssen den Typ all ihrer Operanden prüfen und " -"die nötigen Umwandlungen vornehmen (mindestens einer der Operanden ist eine " -"Instanz des festgelegten Typs). Ist der Vorgang für die gegebenen Operanden " -"nicht festgelegt, müssen binäre und ternäre Funktionen ``Py_NotImplemented`` " -"zurückgeben. Trat ein anderer Fehler auf, müssen sie ``NULL`` zurückgeben " -"und eine Ausnahme setzen." - -#: ../../c-api/typeobj.rst:2670 -msgid "" -"The :c:member:`~PyNumberMethods.nb_reserved` field should always be " -"``NULL``. It was previously called :c:member:`!nb_long`, and was renamed in " -"Python 3.0.1." -msgstr "" -"Das Feld :c:member:`~PyNumberMethods.nb_reserved` sollte immer ``NULL`` " -"sein. Es hieß früher :c:member:`!nb_long` und wurde in Python 3.0.1 " -"umbenannt." - -#: ../../c-api/typeobj.rst:2821 -msgid "Mapping Object Structures" -msgstr "Strukturen für Mapping-Objekte" - -#: ../../c-api/typeobj.rst:2825 -msgid "" -"This structure holds pointers to the functions which an object uses to " -"implement the mapping protocol. It has three members:" -msgstr "" -"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " -"Mapping-Protokoll umsetzt. Sie hat drei Member:" - -#: ../../c-api/typeobj.rst:2832 -msgid "" -"This function is used by :c:func:`PyMapping_Size` " -"and :c:func:`PyObject_Size`, and has the same signature. This slot may be " -"set to ``NULL`` if the object has no defined length." -msgstr "" -"Diese Funktion wird von :c:func:`PyMapping_Size` und :c:func:`PyObject_Size` " -"verwendet und hat dieselbe Signatur. Dieser Slot darf auf ``NULL`` gesetzt " -"werden, wenn das Objekt keine festgelegte Länge hat." - -#: ../../c-api/typeobj.rst:2840 -msgid "" -"This function is used by :c:func:`PyObject_GetItem` " -"and :c:func:`PySequence_GetSlice`, and has the same signature as :c:func:`!" -"PyObject_GetItem`. This slot must be filled for " -"the :c:func:`PyMapping_Check` function to return ``1``, it can be ``NULL`` " -"otherwise." -msgstr "" -"Diese Funktion wird von :c:func:`PyObject_GetItem` " -"und :c:func:`PySequence_GetSlice` verwendet und hat dieselbe Signatur " -"wie :c:func:`!PyObject_GetItem`. Dieser Slot muss gefüllt sein, damit die " -"Funktion :c:func:`PyMapping_Check` ``1`` zurückgibt. Andernfalls darf er " -"``NULL`` sein." - -#: ../../c-api/typeobj.rst:2850 -msgid "" -"This function is used " -"by :c:func:`PyObject_SetItem`, :c:func:`PyObject_DelItem`, :c:func:`PySequence_SetSlice` " -"and :c:func:`PySequence_DelSlice`. It has the same signature as :c:func:`!" -"PyObject_SetItem`, but *v* can also be set to ``NULL`` to delete an item. " -"If this slot is ``NULL``, the object does not support item assignment and " -"deletion." -msgstr "" -"Diese Funktion wird " -"von :c:func:`PyObject_SetItem`, :c:func:`PyObject_DelItem`, :c:func:`PySequence_SetSlice` " -"und :c:func:`PySequence_DelSlice` verwendet. Sie hat dieselbe Signatur " -"wie :c:func:`!PyObject_SetItem`, *v* darf aber auch auf ``NULL`` gesetzt " -"werden, um ein Element zu löschen. Ist dieser Slot ``NULL``, unterstützt das " -"Objekt das Zuweisen und Löschen von Elementen nicht." - -#: ../../c-api/typeobj.rst:2861 -msgid "Sequence Object Structures" -msgstr "Strukturen für Sequenzobjekte" - -#: ../../c-api/typeobj.rst:2865 -msgid "" -"This structure holds pointers to the functions which an object uses to " -"implement the sequence protocol." -msgstr "" -"Diese Struktur enthält Zeiger auf die Funktionen, über die ein Objekt das " -"Sequenzprotokoll umsetzt." - -#: ../../c-api/typeobj.rst:2872 -msgid "" -"This function is used by :c:func:`PySequence_Size` " -"and :c:func:`PyObject_Size`, and has the same signature. It is also used " -"for handling negative indices via the :c:member:`~PySequenceMethods.sq_item` " -"and the :c:member:`~PySequenceMethods.sq_ass_item` slots." -msgstr "" -"Diese Funktion wird von :c:func:`PySequence_Size` " -"und :c:func:`PyObject_Size` verwendet und hat dieselbe Signatur. Sie dient " -"außerdem dem Umgang mit negativen Indizes über die " -"Slots :c:member:`~PySequenceMethods.sq_item` " -"und :c:member:`~PySequenceMethods.sq_ass_item`." - -#: ../../c-api/typeobj.rst:2881 -msgid "" -"This function is used by :c:func:`PySequence_Concat` and has the same " -"signature. It is also used by the ``+`` operator, after trying the numeric " -"addition via the :c:member:`~PyNumberMethods.nb_add` slot." -msgstr "" -"Diese Funktion wird von :c:func:`PySequence_Concat` verwendet und hat " -"dieselbe Signatur. Sie wird außerdem vom Operator ``+`` verwendet, nachdem " -"die numerische Addition über den Slot :c:member:`~PyNumberMethods.nb_add` " -"versucht wurde." - -#: ../../c-api/typeobj.rst:2889 -msgid "" -"This function is used by :c:func:`PySequence_Repeat` and has the same " -"signature. It is also used by the ``*`` operator, after trying numeric " -"multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot." -msgstr "" -"Diese Funktion wird von :c:func:`PySequence_Repeat` verwendet und hat " -"dieselbe Signatur. Sie wird außerdem vom Operator ``*`` verwendet, nachdem " -"die numerische Multiplikation über den " -"Slot :c:member:`~PyNumberMethods.nb_multiply` versucht wurde." - -#: ../../c-api/typeobj.rst:2897 -msgid "" -"This function is used by :c:func:`PySequence_GetItem` and has the same " -"signature. It is also used by :c:func:`PyObject_GetItem`, after trying the " -"subscription via the :c:member:`~PyMappingMethods.mp_subscript` slot. This " -"slot must be filled for the :c:func:`PySequence_Check` function to return " -"``1``, it can be ``NULL`` otherwise." -msgstr "" -"Diese Funktion wird von :c:func:`PySequence_GetItem` verwendet und hat " -"dieselbe Signatur. Sie wird außerdem von :c:func:`PyObject_GetItem` " -"verwendet, nachdem der Indexzugriff über den " -"Slot :c:member:`~PyMappingMethods.mp_subscript` versucht wurde. Dieser Slot " -"muss gefüllt sein, damit die Funktion :c:func:`PySequence_Check` ``1`` " -"zurückgibt. Andernfalls darf er ``NULL`` sein." - -#: ../../c-api/typeobj.rst:2903 -msgid "" -"Negative indexes are handled as follows: if " -"the :c:member:`~PySequenceMethods.sq_length` slot is filled, it is called " -"and the sequence length is used to compute a positive index which is passed " -"to :c:member:`~PySequenceMethods.sq_item`. If :c:member:`!sq_length` is " -"``NULL``, the index is passed as is to the function." -msgstr "" -"Mit negativen Indizes wird so umgegangen: Ist der " -"Slot :c:member:`~PySequenceMethods.sq_length` gefüllt, wird er aufgerufen, " -"und über die Länge der Sequenz wird ein positiver Index berechnet, der " -"an :c:member:`~PySequenceMethods.sq_item` übergeben wird. Ist :c:member:`!" -"sq_length` ``NULL``, wird der Index unverändert an die Funktion übergeben." - -#: ../../c-api/typeobj.rst:2912 -msgid "" -"This function is used by :c:func:`PySequence_SetItem` and has the same " -"signature. It is also used by :c:func:`PyObject_SetItem` " -"and :c:func:`PyObject_DelItem`, after trying the item assignment and " -"deletion via the :c:member:`~PyMappingMethods.mp_ass_subscript` slot. This " -"slot may be left to ``NULL`` if the object does not support item assignment " -"and deletion." -msgstr "" -"Diese Funktion wird von :c:func:`PySequence_SetItem` verwendet und hat " -"dieselbe Signatur. Sie wird außerdem von :c:func:`PyObject_SetItem` " -"und :c:func:`PyObject_DelItem` verwendet, nachdem das Zuweisen und Löschen " -"von Elementen über den Slot :c:member:`~PyMappingMethods.mp_ass_subscript` " -"versucht wurde. Dieser Slot darf ``NULL`` bleiben, wenn das Objekt das " -"Zuweisen und Löschen von Elementen nicht unterstützt." - -#: ../../c-api/typeobj.rst:2923 -msgid "" -"This function may be used by :c:func:`PySequence_Contains` and has the same " -"signature. This slot may be left to ``NULL``, in this case :c:func:`!" -"PySequence_Contains` simply traverses the sequence until it finds a match." -msgstr "" -"Diese Funktion kann von :c:func:`PySequence_Contains` verwendet werden und " -"hat dieselbe Signatur. Dieser Slot darf ``NULL`` bleiben. In diesem Fall " -"durchläuft :c:func:`!PySequence_Contains` die Sequenz einfach, bis es eine " -"Übereinstimmung findet." - -#: ../../c-api/typeobj.rst:2932 -msgid "" -"This function is used by :c:func:`PySequence_InPlaceConcat` and has the same " -"signature. It should modify its first operand, and return it. This slot " -"may be left to ``NULL``, in this case :c:func:`!PySequence_InPlaceConcat` " -"will fall back to :c:func:`PySequence_Concat`. It is also used by the " -"augmented assignment ``+=``, after trying numeric in-place addition via " -"the :c:member:`~PyNumberMethods.nb_inplace_add` slot." -msgstr "" -"Diese Funktion wird von :c:func:`PySequence_InPlaceConcat` verwendet und hat " -"dieselbe Signatur. Sie sollte ihren ersten Operanden ändern und zurückgeben. " -"Dieser Slot darf ``NULL`` bleiben. In diesem Fall fällt :c:func:`!" -"PySequence_InPlaceConcat` auf :c:func:`PySequence_Concat` zurück. Sie wird " -"außerdem von der erweiterten Zuweisung ``+=`` verwendet, nachdem die " -"numerische Addition an Ort und Stelle über den " -"Slot :c:member:`~PyNumberMethods.nb_inplace_add` versucht wurde." - -#: ../../c-api/typeobj.rst:2943 -msgid "" -"This function is used by :c:func:`PySequence_InPlaceRepeat` and has the same " -"signature. It should modify its first operand, and return it. This slot " -"may be left to ``NULL``, in this case :c:func:`!PySequence_InPlaceRepeat` " -"will fall back to :c:func:`PySequence_Repeat`. It is also used by the " -"augmented assignment ``*=``, after trying numeric in-place multiplication " -"via the :c:member:`~PyNumberMethods.nb_inplace_multiply` slot." -msgstr "" -"Diese Funktion wird von :c:func:`PySequence_InPlaceRepeat` verwendet und hat " -"dieselbe Signatur. Sie sollte ihren ersten Operanden ändern und zurückgeben. " -"Dieser Slot darf ``NULL`` bleiben. In diesem Fall fällt :c:func:`!" -"PySequence_InPlaceRepeat` auf :c:func:`PySequence_Repeat` zurück. Sie wird " -"außerdem von der erweiterten Zuweisung ``*=`` verwendet, nachdem die " -"numerische Multiplikation an Ort und Stelle über den " -"Slot :c:member:`~PyNumberMethods.nb_inplace_multiply` versucht wurde." - -#: ../../c-api/typeobj.rst:2954 -msgid "Buffer Object Structures" -msgstr "Strukturen für Pufferobjekte" - -#: ../../c-api/typeobj.rst:2958 -msgid "" -"This structure holds pointers to the functions required by the :ref:`Buffer " -"protocol `. The protocol defines how an exporter object can " -"expose its internal data to consumer objects." -msgstr "" -"Diese Struktur enthält Zeiger auf die Funktionen, die das :ref:`Puffer-" -"Protokoll ` verlangt. Das Protokoll legt fest, wie ein " -"exportierendes Objekt seine internen Daten für verbrauchende Objekte " -"zugänglich machen kann." - -#: ../../c-api/typeobj.rst:2966 ../../c-api/typeobj.rst:3035 -#: ../../c-api/typeobj.rst:3099 ../../c-api/typeobj.rst:3112 -#: ../../c-api/typeobj.rst:3126 ../../c-api/typeobj.rst:3138 -msgid "The signature of this function is::" -msgstr "Die Signatur dieser Funktion lautet::" - -#: ../../c-api/typeobj.rst:2968 -msgid "int (PyObject *exporter, Py_buffer *view, int flags);" -msgstr "int (PyObject *exporter, Py_buffer *view, int flags);" - -#: ../../c-api/typeobj.rst:2970 -msgid "" -"Handle a request to *exporter* to fill in *view* as specified by *flags*. " -"Except for point (3), an implementation of this function MUST take these " -"steps:" -msgstr "" -"Behandelt eine Anfrage an *exporter*, *view* so zu füllen, wie *flags* es " -"angibt. Abgesehen von Punkt (3) MUSS eine Umsetzung dieser Funktion diese " -"Schritte ausführen:" - -#: ../../c-api/typeobj.rst:2974 -msgid "" -"Check if the request can be met. If not, raise :exc:`BufferError`, set " -"``view->obj`` to ``NULL`` and return ``-1``." -msgstr "" -"Prüfen, ob die Anfrage erfüllt werden kann. Wenn nicht, :exc:`BufferError` " -"auslösen, ``view->obj`` auf ``NULL`` setzen und ``-1`` zurückgeben." - -#: ../../c-api/typeobj.rst:2977 -msgid "Fill in the requested fields." -msgstr "Die angefragten Felder füllen." - -#: ../../c-api/typeobj.rst:2979 -msgid "Increment an internal counter for the number of exports." -msgstr "Einen internen Zähler für die Anzahl der Exporte erhöhen." - -#: ../../c-api/typeobj.rst:2981 -msgid "Set ``view->obj`` to *exporter* and increment ``view->obj``." -msgstr "``view->obj`` auf *exporter* setzen und ``view->obj`` erhöhen." - -#: ../../c-api/typeobj.rst:2983 -msgid "Return ``0``." -msgstr "``0`` zurückgeben." - -#: ../../c-api/typeobj.rst:2985 ../../c-api/typeobj.rst:3048 -msgid "**Thread safety:**" -msgstr "**Thread-Sicherheit:**" - -#: ../../c-api/typeobj.rst:2987 -msgid "In the :term:`free-threaded build`, implementations must ensure:" -msgstr "" -"Im :term:`Build mit freien Threads ` müssen Umsetzungen " -"sicherstellen:" - -#: ../../c-api/typeobj.rst:2989 -msgid "The export counter increment in step (3) is atomic." -msgstr "Das Erhöhen des Exportzählers in Schritt (3) ist atomar." - -#: ../../c-api/typeobj.rst:2991 -msgid "" -"The underlying buffer data remains valid and at a stable memory location for " -"the lifetime of all exports." -msgstr "" -"Die zugrunde liegenden Pufferdaten bleiben gültig und an einer " -"unveränderlichen Speicherstelle, solange Exporte bestehen." - -#: ../../c-api/typeobj.rst:2994 -msgid "" -"For objects that support resizing or reallocation (such " -"as :class:`bytearray`), the export counter is checked atomically before such " -"operations, and :exc:`BufferError` is raised if exports exist." -msgstr "" -"Bei Objekten, die sich in der Größe ändern oder neu belegen lassen " -"(wie :class:`bytearray`), wird der Exportzähler vor solchen Vorgängen atomar " -"geprüft, und es wird :exc:`BufferError` ausgelöst, wenn Exporte bestehen." - -#: ../../c-api/typeobj.rst:2998 -msgid "The function is safe to call concurrently from multiple threads." -msgstr "" -"Die Funktion lässt sich sicher gleichzeitig aus mehreren Threads aufrufen." - -#: ../../c-api/typeobj.rst:3000 -msgid "" -"See also :ref:`thread-safety-memoryview` for the Python-level thread safety " -"guarantees of :class:`memoryview` objects." -msgstr "" -"Siehe auch :ref:`thread-safety-memoryview` zu den Zusagen zur Thread-" -"Sicherheit von :class:`memoryview`-Objekten auf Python-Ebene." - -#: ../../c-api/typeobj.rst:3003 -msgid "" -"If *exporter* is part of a chain or tree of buffer providers, two main " -"schemes can be used:" -msgstr "" -"Ist *exporter* Teil einer Kette oder eines Baums von Pufferanbietern, sind " -"zwei grundlegende Vorgehensweisen möglich:" - -#: ../../c-api/typeobj.rst:3006 -msgid "" -"Re-export: Each member of the tree acts as the exporting object and sets " -"``view->obj`` to a new reference to itself." -msgstr "" -"Weiterexport: Jedes Mitglied des Baums tritt als exportierendes Objekt auf " -"und setzt ``view->obj`` auf eine neue Referenz auf sich selbst." - -#: ../../c-api/typeobj.rst:3009 -msgid "" -"Redirect: The buffer request is redirected to the root object of the tree. " -"Here, ``view->obj`` will be a new reference to the root object." -msgstr "" -"Umleitung: Die Pufferanfrage wird an das Wurzelobjekt des Baums umgeleitet. " -"Hier ist ``view->obj`` eine neue Referenz auf das Wurzelobjekt." - -#: ../../c-api/typeobj.rst:3013 -msgid "" -"The individual fields of *view* are described in section :ref:`Buffer " -"structure `, the rules how an exporter must react to " -"specific requests are in section :ref:`Buffer request types `." -msgstr "" -"Die einzelnen Felder von *view* sind im Abschnitt :ref:`Pufferstruktur " -"` beschrieben, die Regeln, wie ein Exporteur auf bestimmte " -"Anfragen reagieren muss, stehen im Abschnitt :ref:`Arten von Pufferanfragen " -"`." - -#: ../../c-api/typeobj.rst:3018 -msgid "" -"All memory pointed to in the :c:type:`Py_buffer` structure belongs to the " -"exporter and must remain valid until there are no consumers " -"left. :c:member:`~Py_buffer.format`, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`, :c:member:`~Py_buffer.suboffsets` " -"and :c:member:`~Py_buffer.internal` are read-only for the consumer." -msgstr "" -"Aller Speicher, auf den die Struktur :c:type:`Py_buffer` zeigt, gehört dem " -"Exporteur und muss gültig bleiben, solange noch Verbraucher vorhanden " -"sind. :c:member:`~Py_buffer.format`, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`, :c:member:`~Py_buffer.suboffsets` " -"und :c:member:`~Py_buffer.internal` sind für den Verbraucher nur lesbar." - -#: ../../c-api/typeobj.rst:3025 -msgid "" -":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes " -"buffer while dealing correctly with all request types." -msgstr "" -":c:func:`PyBuffer_FillInfo` bietet einen einfachen Weg, einen schlichten " -"Bytes-Puffer zugänglich zu machen und dabei alle Arten von Anfragen richtig " -"zu behandeln." - -#: ../../c-api/typeobj.rst:3028 -msgid "" -":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps " -"this function." -msgstr "" -":c:func:`PyObject_GetBuffer` ist die Schnittstelle für den Verbraucher, die " -"diese Funktion umhüllt." - -#: ../../c-api/typeobj.rst:3037 -msgid "void (PyObject *exporter, Py_buffer *view);" -msgstr "void (PyObject *exporter, Py_buffer *view);" - -#: ../../c-api/typeobj.rst:3039 -msgid "" -"Handle a request to release the resources of the buffer. If no resources " -"need to be released, :c:member:`PyBufferProcs.bf_releasebuffer` may be " -"``NULL``. Otherwise, a standard implementation of this function will take " -"these optional steps:" -msgstr "" -"Behandelt eine Anfrage, die Ressourcen des Puffers freizugeben. Müssen keine " -"Ressourcen freigegeben werden, " -"darf :c:member:`PyBufferProcs.bf_releasebuffer` ``NULL`` sein. Andernfalls " -"führt eine gewöhnliche Umsetzung dieser Funktion diese wahlfreien Schritte " -"aus:" - -#: ../../c-api/typeobj.rst:3044 -msgid "Decrement an internal counter for the number of exports." -msgstr "Einen internen Zähler für die Anzahl der Exporte verringern." - -#: ../../c-api/typeobj.rst:3046 -msgid "If the counter is ``0``, free all memory associated with *view*." -msgstr "Ist der Zähler ``0``, allen zu *view* gehörenden Speicher freigeben." - -#: ../../c-api/typeobj.rst:3050 -msgid "In the :term:`free-threaded build`:" -msgstr "Im :term:`Build mit freien Threads `:" - -#: ../../c-api/typeobj.rst:3052 -msgid "The export counter decrement in step (1) must be atomic." -msgstr "Das Verringern des Exportzählers in Schritt (1) muss atomar sein." - -#: ../../c-api/typeobj.rst:3054 -msgid "" -"Resource cleanup when the counter reaches zero must be done atomically, as " -"the final release may race with concurrent releases from other threads and " -"deallocation must only happen once." -msgstr "" -"Das Aufräumen der Ressourcen, wenn der Zähler null erreicht, muss atomar " -"geschehen, weil die letzte Freigabe mit gleichzeitigen Freigaben anderer " -"Threads um die Wette laufen kann und die Speicherfreigabe nur ein einziges " -"Mal geschehen darf." - -#: ../../c-api/typeobj.rst:3058 -msgid "" -"The exporter MUST use the :c:member:`~Py_buffer.internal` field to keep " -"track of buffer-specific resources. This field is guaranteed to remain " -"constant, while a consumer MAY pass a copy of the original buffer as the " -"*view* argument." -msgstr "" -"Der Exporteur MUSS das Feld :c:member:`~Py_buffer.internal` verwenden, um " -"pufferspezifische Ressourcen zu verfolgen. Dieses Feld bleibt zugesichert " -"unverändert, während ein Verbraucher dem Argument *view* eine Kopie des " -"ursprünglichen Puffers übergeben DARF." - -#: ../../c-api/typeobj.rst:3064 -msgid "" -"This function MUST NOT decrement ``view->obj``, since that is done " -"automatically in :c:func:`PyBuffer_Release` (this scheme is useful for " -"breaking reference cycles)." -msgstr "" -"Diese Funktion DARF ``view->obj`` NICHT verringern, weil das " -"in :c:func:`PyBuffer_Release` automatisch geschieht (diese Vorgehensweise " -"ist nützlich, um Referenzzyklen aufzubrechen)." - -#: ../../c-api/typeobj.rst:3069 -msgid "" -":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this " -"function." -msgstr "" -":c:func:`PyBuffer_Release` ist die Schnittstelle für den Verbraucher, die " -"diese Funktion umhüllt." - -#: ../../c-api/typeobj.rst:3077 -msgid "Async Object Structures" -msgstr "Strukturen für Async-Objekte" - -#: ../../c-api/typeobj.rst:3083 -msgid "" -"This structure holds pointers to the functions required to " -"implement :term:`awaitable` and :term:`asynchronous iterator` objects." -msgstr "" -"Diese Struktur enthält Zeiger auf die Funktionen, die nötig sind, " -"um :term:`abwartbare ` Objekte und :term:`asynchrone Iteratoren " -"` umzusetzen." - -#: ../../c-api/typeobj.rst:3088 -msgid "" -"typedef struct {\n" -" unaryfunc am_await;\n" -" unaryfunc am_aiter;\n" -" unaryfunc am_anext;\n" -" sendfunc am_send;\n" -"} PyAsyncMethods;" -msgstr "" -"typedef struct {\n" -" unaryfunc am_await;\n" -" unaryfunc am_aiter;\n" -" unaryfunc am_anext;\n" -" sendfunc am_send;\n" -"} PyAsyncMethods;" - -#: ../../c-api/typeobj.rst:3101 -msgid "PyObject *am_await(PyObject *self);" -msgstr "PyObject *am_await(PyObject *self);" - -#: ../../c-api/typeobj.rst:3103 -msgid "" -"The returned object must be an :term:`iterator`, i.e. :c:func:`PyIter_Check` " -"must return ``1`` for it." -msgstr "" -"Das zurückgegebene Objekt muss ein :term:`Iterator ` " -"sein, :c:func:`PyIter_Check` muss dafür also ``1`` zurückgeben." - -#: ../../c-api/typeobj.rst:3106 -msgid "" -"This slot may be set to ``NULL`` if an object is not an :term:`awaitable`." -msgstr "" -"Dieser Slot darf auf ``NULL`` gesetzt werden, wenn ein Objekt " -"nicht :term:`abwartbar ` ist." - -#: ../../c-api/typeobj.rst:3114 -msgid "PyObject *am_aiter(PyObject *self);" -msgstr "PyObject *am_aiter(PyObject *self);" - -#: ../../c-api/typeobj.rst:3116 -msgid "" -"Must return an :term:`asynchronous iterator` object. " -"See :meth:`~object.__anext__` for details." -msgstr "" -"Muss ein Objekt zurückgeben, das ein :term:`asynchroner Iterator " -"` ist. Einzelheiten stehen " -"unter :meth:`~object.__anext__`." - -#: ../../c-api/typeobj.rst:3119 -msgid "" -"This slot may be set to ``NULL`` if an object does not implement " -"asynchronous iteration protocol." -msgstr "" -"Dieser Slot darf auf ``NULL`` gesetzt werden, wenn ein Objekt das Protokoll " -"für asynchrone Iteration nicht umsetzt." - -#: ../../c-api/typeobj.rst:3128 -msgid "PyObject *am_anext(PyObject *self);" -msgstr "PyObject *am_anext(PyObject *self);" - -#: ../../c-api/typeobj.rst:3130 -msgid "" -"Must return an :term:`awaitable` object. See :meth:`~object.__anext__` for " -"details. This slot may be set to ``NULL``." -msgstr "" -"Muss ein :term:`abwartbares ` Objekt zurückgeben. Einzelheiten " -"stehen unter :meth:`~object.__anext__`. Dieser Slot darf auf ``NULL`` " -"gesetzt werden." - -#: ../../c-api/typeobj.rst:3140 -msgid "PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" -msgstr "" -"PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);" - -#: ../../c-api/typeobj.rst:3142 -msgid "" -"See :c:func:`PyIter_Send` for details. This slot may be set to ``NULL``." -msgstr "" -"Einzelheiten stehen unter :c:func:`PyIter_Send`. Dieser Slot darf auf " -"``NULL`` gesetzt werden." - -#: ../../c-api/typeobj.rst:3151 -msgid "Slot Type typedefs" -msgstr "Typedefs für Slot-Typen" - -#: ../../c-api/typeobj.rst:3155 -msgid "" -"The purpose of this function is to separate memory allocation from memory " -"initialization. It should return a pointer to a block of memory of adequate " -"length for the instance, suitably aligned, and initialized to zeros, but " -"with :c:member:`~PyObject.ob_refcnt` set to ``1`` " -"and :c:member:`~PyObject.ob_type` set to the type argument. If the " -"type's :c:member:`~PyTypeObject.tp_itemsize` is non-zero, the " -"object's :c:member:`~PyVarObject.ob_size` field should be initialized to " -"*nitems* and the length of the allocated memory block should be " -"``tp_basicsize + nitems*tp_itemsize``, rounded up to a multiple of " -"``sizeof(void*)``; otherwise, *nitems* is not used and the length of the " -"block should be :c:member:`~PyTypeObject.tp_basicsize`." -msgstr "" -"Diese Funktion soll die Speicherbelegung von der Speicherinitialisierung " -"trennen. Sie sollte einen Zeiger auf einen Speicherblock zurückgeben, der " -"für die Instanz lang genug und passend ausgerichtet und mit Nullen " -"initialisiert ist, bei dem aber :c:member:`~PyObject.ob_refcnt` auf ``1`` " -"und :c:member:`~PyObject.ob_type` auf das Typargument gesetzt ist. " -"Ist :c:member:`~PyTypeObject.tp_itemsize` des Typs ungleich null, sollte das " -"Feld :c:member:`~PyVarObject.ob_size` des Objekts mit *nitems* initialisiert " -"werden, und die Länge des belegten Speicherblocks sollte ``tp_basicsize + " -"nitems*tp_itemsize`` sein, aufgerundet auf ein Vielfaches von " -"``sizeof(void*)``. Andernfalls wird *nitems* nicht verwendet, und die Länge " -"des Blocks sollte :c:member:`~PyTypeObject.tp_basicsize` sein." - -#: ../../c-api/typeobj.rst:3165 -msgid "" -"This function should not do any other instance initialization, not even to " -"allocate additional memory; that should be done " -"by :c:member:`~PyTypeObject.tp_new`." -msgstr "" -"Diese Funktion sollte keine weitere Initialisierung der Instanz vornehmen, " -"auch keinen zusätzlichen Speicher belegen. Das " -"sollte :c:member:`~PyTypeObject.tp_new` erledigen." - -#: ../../c-api/typeobj.rst:3172 -msgid "See :c:member:`~PyTypeObject.tp_free`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_free`." - -#: ../../c-api/typeobj.rst:3176 -msgid "See :c:member:`~PyTypeObject.tp_new`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_new`." - -#: ../../c-api/typeobj.rst:3180 -msgid "See :c:member:`~PyTypeObject.tp_init`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_init`." - -#: ../../c-api/typeobj.rst:3184 -msgid "See :c:member:`~PyTypeObject.tp_repr`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_repr`." - -#: ../../c-api/typeobj.rst:3188 ../../c-api/typeobj.rst:3197 -msgid "Return the value of the named attribute for the object." -msgstr "Gibt den Wert des benannten Attributs des Objekts zurück." - -#: ../../c-api/typeobj.rst:3192 ../../c-api/typeobj.rst:3203 -msgid "" -"Set the value of the named attribute for the object. The value argument is " -"set to ``NULL`` to delete the attribute." -msgstr "" -"Setzt den Wert des benannten Attributs des Objekts. Das Argument für den " -"Wert wird auf ``NULL`` gesetzt, um das Attribut zu löschen." - -#: ../../c-api/typeobj.rst:3199 -msgid "See :c:member:`~PyTypeObject.tp_getattro`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_getattro`." - -#: ../../c-api/typeobj.rst:3206 -msgid "See :c:member:`~PyTypeObject.tp_setattro`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_setattro`." - -#: ../../c-api/typeobj.rst:3210 -msgid "See :c:member:`~PyTypeObject.tp_descr_get`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_descr_get`." - -#: ../../c-api/typeobj.rst:3214 -msgid "See :c:member:`~PyTypeObject.tp_descr_set`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_descr_set`." - -#: ../../c-api/typeobj.rst:3218 -msgid "See :c:member:`~PyTypeObject.tp_hash`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_hash`." - -#: ../../c-api/typeobj.rst:3222 -msgid "See :c:member:`~PyTypeObject.tp_richcompare`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_richcompare`." - -#: ../../c-api/typeobj.rst:3226 -msgid "See :c:member:`~PyTypeObject.tp_iter`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_iter`." - -#: ../../c-api/typeobj.rst:3230 -msgid "See :c:member:`~PyTypeObject.tp_iternext`." -msgstr "Siehe :c:member:`~PyTypeObject.tp_iternext`." - -#: ../../c-api/typeobj.rst:3244 -msgid "See :c:member:`~PyAsyncMethods.am_send`." -msgstr "Siehe :c:member:`~PyAsyncMethods.am_send`." - -#: ../../c-api/typeobj.rst:3260 -msgid "Examples" -msgstr "Beispiele" - -#: ../../c-api/typeobj.rst:3262 -msgid "" -"The following are simple examples of Python type definitions. They include " -"common usage you may encounter. Some demonstrate tricky corner cases. For " -"more examples, practical info, and a tutorial, see :ref:`defining-new-types` " -"and :ref:`new-types-topics`." -msgstr "" -"Hier einige einfache Beispiele für Python-Typdefinitionen. Sie enthalten " -"gängige Verwendungen, auf die du stoßen wirst. Manche zeigen knifflige " -"Sonderfälle. Weitere Beispiele, praktische Hinweise und eine Einführung " -"stehen unter :ref:`defining-new-types` und :ref:`new-types-topics`." - -#: ../../c-api/typeobj.rst:3267 -msgid "A basic :ref:`static type `::" -msgstr "Ein einfacher :ref:`statischer Typ `::" - -#: ../../c-api/typeobj.rst:3269 -msgid "" -"typedef struct {\n" -" PyObject_HEAD\n" -" const char *data;\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -" .tp_basicsize = sizeof(MyObject),\n" -" .tp_doc = PyDoc_STR(\"My objects\"),\n" -" .tp_new = myobj_new,\n" -" .tp_dealloc = (destructor)myobj_dealloc,\n" -" .tp_repr = (reprfunc)myobj_repr,\n" -"};" -msgstr "" -"typedef struct {\n" -" PyObject_HEAD\n" -" const char *data;\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -" .tp_basicsize = sizeof(MyObject),\n" -" .tp_doc = PyDoc_STR(\"My objects\"),\n" -" .tp_new = myobj_new,\n" -" .tp_dealloc = (destructor)myobj_dealloc,\n" -" .tp_repr = (reprfunc)myobj_repr,\n" -"};" - -#: ../../c-api/typeobj.rst:3284 -msgid "" -"You may also find older code (especially in the CPython code base) with a " -"more verbose initializer::" -msgstr "" -"Du wirst möglicherweise auch älteren Code finden (besonders in der CPython-" -"Codebasis), der einen ausführlicheren Initialisierer verwendet::" - -#: ../../c-api/typeobj.rst:3287 -msgid "" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" \"mymod.MyObject\", /* tp_name */\n" -" sizeof(MyObject), /* tp_basicsize */\n" -" 0, /* tp_itemsize */\n" -" (destructor)myobj_dealloc, /* tp_dealloc */\n" -" 0, /* tp_vectorcall_offset */\n" -" 0, /* tp_getattr */\n" -" 0, /* tp_setattr */\n" -" 0, /* tp_as_async */\n" -" (reprfunc)myobj_repr, /* tp_repr */\n" -" 0, /* tp_as_number */\n" -" 0, /* tp_as_sequence */\n" -" 0, /* tp_as_mapping */\n" -" 0, /* tp_hash */\n" -" 0, /* tp_call */\n" -" 0, /* tp_str */\n" -" 0, /* tp_getattro */\n" -" 0, /* tp_setattro */\n" -" 0, /* tp_as_buffer */\n" -" 0, /* tp_flags */\n" -" PyDoc_STR(\"My objects\"), /* tp_doc */\n" -" 0, /* tp_traverse */\n" -" 0, /* tp_clear */\n" -" 0, /* tp_richcompare */\n" -" 0, /* tp_weaklistoffset */\n" -" 0, /* tp_iter */\n" -" 0, /* tp_iternext */\n" -" 0, /* tp_methods */\n" -" 0, /* tp_members */\n" -" 0, /* tp_getset */\n" -" 0, /* tp_base */\n" -" 0, /* tp_dict */\n" -" 0, /* tp_descr_get */\n" -" 0, /* tp_descr_set */\n" -" 0, /* tp_dictoffset */\n" -" 0, /* tp_init */\n" -" 0, /* tp_alloc */\n" -" myobj_new, /* tp_new */\n" -"};" -msgstr "" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" \"mymod.MyObject\", /* tp_name */\n" -" sizeof(MyObject), /* tp_basicsize */\n" -" 0, /* tp_itemsize */\n" -" (destructor)myobj_dealloc, /* tp_dealloc */\n" -" 0, /* tp_vectorcall_offset */\n" -" 0, /* tp_getattr */\n" -" 0, /* tp_setattr */\n" -" 0, /* tp_as_async */\n" -" (reprfunc)myobj_repr, /* tp_repr */\n" -" 0, /* tp_as_number */\n" -" 0, /* tp_as_sequence */\n" -" 0, /* tp_as_mapping */\n" -" 0, /* tp_hash */\n" -" 0, /* tp_call */\n" -" 0, /* tp_str */\n" -" 0, /* tp_getattro */\n" -" 0, /* tp_setattro */\n" -" 0, /* tp_as_buffer */\n" -" 0, /* tp_flags */\n" -" PyDoc_STR(\"My objects\"), /* tp_doc */\n" -" 0, /* tp_traverse */\n" -" 0, /* tp_clear */\n" -" 0, /* tp_richcompare */\n" -" 0, /* tp_weaklistoffset */\n" -" 0, /* tp_iter */\n" -" 0, /* tp_iternext */\n" -" 0, /* tp_methods */\n" -" 0, /* tp_members */\n" -" 0, /* tp_getset */\n" -" 0, /* tp_base */\n" -" 0, /* tp_dict */\n" -" 0, /* tp_descr_get */\n" -" 0, /* tp_descr_set */\n" -" 0, /* tp_dictoffset */\n" -" 0, /* tp_init */\n" -" 0, /* tp_alloc */\n" -" myobj_new, /* tp_new */\n" -"};" - -#: ../../c-api/typeobj.rst:3328 -msgid "A type that supports weakrefs, instance dicts, and hashing::" -msgstr "" -"Ein Typ, der schwache Referenzen, Instanz-Dictionaries und Hashing " -"unterstützt::" - -#: ../../c-api/typeobj.rst:3330 -msgid "" -"typedef struct {\n" -" PyObject_HEAD\n" -" const char *data;\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -" .tp_basicsize = sizeof(MyObject),\n" -" .tp_doc = PyDoc_STR(\"My objects\"),\n" -" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |\n" -" Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_MANAGED_DICT |\n" -" Py_TPFLAGS_MANAGED_WEAKREF,\n" -" .tp_new = myobj_new,\n" -" .tp_traverse = (traverseproc)myobj_traverse,\n" -" .tp_clear = (inquiry)myobj_clear,\n" -" .tp_alloc = PyType_GenericNew,\n" -" .tp_dealloc = (destructor)myobj_dealloc,\n" -" .tp_repr = (reprfunc)myobj_repr,\n" -" .tp_hash = (hashfunc)myobj_hash,\n" -" .tp_richcompare = PyBaseObject_Type.tp_richcompare,\n" -"};" -msgstr "" -"typedef struct {\n" -" PyObject_HEAD\n" -" const char *data;\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -" .tp_basicsize = sizeof(MyObject),\n" -" .tp_doc = PyDoc_STR(\"My objects\"),\n" -" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |\n" -" Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_MANAGED_DICT |\n" -" Py_TPFLAGS_MANAGED_WEAKREF,\n" -" .tp_new = myobj_new,\n" -" .tp_traverse = (traverseproc)myobj_traverse,\n" -" .tp_clear = (inquiry)myobj_clear,\n" -" .tp_alloc = PyType_GenericNew,\n" -" .tp_dealloc = (destructor)myobj_dealloc,\n" -" .tp_repr = (reprfunc)myobj_repr,\n" -" .tp_hash = (hashfunc)myobj_hash,\n" -" .tp_richcompare = PyBaseObject_Type.tp_richcompare,\n" -"};" - -#: ../../c-api/typeobj.rst:3353 -msgid "" -"A str subclass that cannot be subclassed and cannot be called to create " -"instances (e.g. uses a separate factory func) " -"using :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag::" -msgstr "" -"Eine str-Unterklasse, von der sich keine Unterklassen bilden lassen und die " -"sich nicht aufrufen lässt, um Instanzen zu erzeugen (die also zum Beispiel " -"eine eigene Fabrikfunktion verwendet), mithilfe des " -"Flags :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION`::" - -#: ../../c-api/typeobj.rst:3357 -msgid "" -"typedef struct {\n" -" PyUnicodeObject raw;\n" -" char *extra;\n" -"} MyStr;\n" -"\n" -"static PyTypeObject MyStr_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyStr\",\n" -" .tp_basicsize = sizeof(MyStr),\n" -" .tp_base = NULL, // set to &PyUnicode_Type in module init\n" -" .tp_doc = PyDoc_STR(\"my custom str\"),\n" -" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,\n" -" .tp_repr = (reprfunc)myobj_repr,\n" -"};" -msgstr "" -"typedef struct {\n" -" PyUnicodeObject raw;\n" -" char *extra;\n" -"} MyStr;\n" -"\n" -"static PyTypeObject MyStr_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyStr\",\n" -" .tp_basicsize = sizeof(MyStr),\n" -" .tp_base = NULL, // set to &PyUnicode_Type in module init\n" -" .tp_doc = PyDoc_STR(\"my custom str\"),\n" -" .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION,\n" -" .tp_repr = (reprfunc)myobj_repr,\n" -"};" - -#: ../../c-api/typeobj.rst:3372 -msgid "" -"The simplest :ref:`static type ` with fixed-length instances::" -msgstr "" -"Der einfachste :ref:`statische Typ ` mit Instanzen fester " -"Länge::" - -#: ../../c-api/typeobj.rst:3374 -msgid "" -"typedef struct {\n" -" PyObject_HEAD\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -"};" -msgstr "" -"typedef struct {\n" -" PyObject_HEAD\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -"};" - -#: ../../c-api/typeobj.rst:3383 -msgid "" -"The simplest :ref:`static type ` with variable-length " -"instances::" -msgstr "" -"Der einfachste :ref:`statische Typ ` mit Instanzen " -"veränderlicher Länge::" - -#: ../../c-api/typeobj.rst:3385 -msgid "" -"typedef struct {\n" -" PyObject_VAR_HEAD\n" -" const char *data[1];\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -" .tp_basicsize = sizeof(MyObject) - sizeof(char *),\n" -" .tp_itemsize = sizeof(char *),\n" -"};" -msgstr "" -"typedef struct {\n" -" PyObject_VAR_HEAD\n" -" const char *data[1];\n" -"} MyObject;\n" -"\n" -"static PyTypeObject MyObject_Type = {\n" -" PyVarObject_HEAD_INIT(NULL, 0)\n" -" .tp_name = \"mymod.MyObject\",\n" -" .tp_basicsize = sizeof(MyObject) - sizeof(char *),\n" -" .tp_itemsize = sizeof(char *),\n" -"};" - -#: ../../c-api/typeobj.rst:928 ../../c-api/typeobj.rst:995 -msgid "built-in function" -msgstr "eingebaute Funktion" - -#: ../../c-api/typeobj.rst:928 -msgid "repr" -msgstr "repr" - -#: ../../c-api/typeobj.rst:995 -msgid "hash" -msgstr "hash"