• Keine Ergebnisse gefunden

copy_reg

Im Dokument Python Referenz (Seite 93-96)

Verfügbarkeit: A

Das Modul copy bietet Funktionen zur Anfertigung von flachen und tiefen Kopien von zusammengesetzten Objekten inklusive Listen, Tupeln, Dictionaries und Klasseninstanzen.

copy(x)

Macht eine flache Kopie von x, indem ein neues zusammengesetztes Objekt erzeugt und mit Verweisen auf den Inhalt von x gefüllt wird.

deepcopy(x [, visit])

Macht eine tiefe Kopie von x, indem ein neues zusammengesetztes Objekt erzeugt und rekursiv mit Kopien aller Elemente von x gefüllt wird. visit ist ein optionales Dictionary, das intern dazu verwendet wird, um Zyklen in rekursiv definierten Datenstrukturen zu erkennen und zu vermeiden.

Eine Klasse kann ihre eigenen Kopiermethoden implementieren, indem sie die Methoden

__copy__(self) und __deepcopy__(self, visit) implementiert. Beide Methoden sollten eine Kopie des Objektes zurückgeben. Außerdem muss die Methode __deepcopy__() ein

optionales Dictionary visit als Parameter akzeptieren, wie es bereits bei der Funktion

deepcopy() beschrieben wurde. Bei der Implementierung von __deepcopy__() ist es nicht notwendig, visit zu modifizieren. visit sollte jedoch an weitere Aufrufe von deepcopy() übergeben werden, falls solche innerhalb der Methode __deepcopy__() vorkommen.

Bemerkungen

• Dieses Modul kann auch mit einfachen Typen wie Ganzzahlen und Strings benutzt werden, aber es gibt kaum einen Grund, das zu tun.

• Die Kopierfunktionen funktionieren nicht bei Modulen, Klassenobjekten, Funktionen, Methoden, Tracebacks, Stapelrahmen, Dateien, Sockets oder ähnlichen Typen.

• Das Modul copy_reg wird nicht von diesem Modul benutzt.

Siehe auch: pickle (Seite 89)

copy_reg

Verfügbarkeit: A

Das Modul copy_reg wird dazu verwendet, die Möglichkeiten der Module pickle und cPickle zu erweitern, damit sie die Serialisierung von Objekten bewerkstelligen können, die durch

Erweiterungstypen beschrieben werden (wie sie in C-Erweiterungsmodulen definiert werden). Dazu wird das Modul von Autoren von Erweiterungsmodulen benutzt, um Funktionen zur Reduktion und Konstruktion zu schreiben, die benutzt werden, um Objekte jeweils zu serialisieren und zu

deserialisieren.

constructor(cfunc)

Erklärt cfunc zu einer gültigen Konstruktorfunktion. cfunc muss ein aufrufbares Objekt sein, das ein Tupel von Werten erwartet, das so von der Reduktionsfunktion zurückgegeben wird, die an die Funktion pickle()übergeben wird.

pickle(type, rfunc [, cfunc])

Registriert rfunc als Reduktionsfunktion für Objekte des Typs type. rfunc muss ein Objekt des entsprechenden Typs erwarten und ein Tupel mit der Konstruktorfunktion sowie dem Tupel der Argumente zurückgeben, die die Konstruktorfunktion benötigt, um das Objekt

wieder herzustellen. cfunc ist eine optionale Konstruktorfunktion, die mit der Funktion constructor() registriert wird, falls angegeben.

Beispiel

Das folgende Beispiel zeigt, wie dieses Modul benutzt werden kann, um komplexe Zahlen (einen eingebauten Datentyp) zu pickeln.

# Registriere eine Methode zum pickling von komplexen Zahlen.

import copy_reg

# Erzeuge eine komplexe Zahl aus zwei reellen.

def construct_complex(real, imag):

return complex(real, imag) # Eingebaute Funktion.

# Nimm eine komplexe Zahl 'c' und mache daraus zwei Fließkommazahlen.

def reduce_complex(c):

return construct_complex, (c.real, c.imag)

# Registriere unsere Funktion.

copy_reg.pickle(type(1j), reduce_complex, construct_complex)

Wenn komplexe Zahlen gepickelt werden, wird die Funktion reduce_complex() aufgerufen. Wenn das Objekt später entpickelt wird, wird die Funktion construct_complex() mit dem ursprünglich von reduce_complex() zurückgegebenen Tupel von Argumenten.

Bemerkungen

• copy_reg ist eine Fehlbezeichnung – dieses Modul wird nicht vom Modul copy verwendet.

• Man muss dieses Modul nicht verwenden, wenn man Instanzen von benutzerdefinierten Klassen pickeln möchte.

Siehe auch: pickle (Seite 89)

marshal

Verfügbarkeit: A

Das Modul marshal wird zur Serialisierung von Python-Objekten verwendet. marshal ähnelt den Modulen pickle und shelve, ist jedoch weniger mächtig als diese und nur zur Verwendung bei einfachen Objekten gedacht. Es sollte nicht zur Implementierung von persistenten Objekten verwendet werden (dazu dient pickle).

dump(value, file)

Schreibt das Objekt value in das geöffnete Dateiobjekt file. Falls value ein nicht unterstützter Typ ist, wird die Ausnahme ValueError ausgelöst.

dumps(value)

Gibt den String zurück, der von der Funktion dump() geschrieben wird. Falls value ein nicht unterstützter Typ ist, wird die Ausnahme ValueError ausgelöst.

load(file)

Liest den nächsten Wert vom geöffneten Dateiobjekt file und gibt ihn zurück. Falls kein gültiger Wert gelesen wird, wird eine der Ausnahmen EOFError, ValueError, oder TypeError ausgelöst.

loads(string)

Liest den nächsten Wert vom String string und gibt ihn zurück.

Bemerkungen

• Daten werden in einem binären, maschinenunabhängigen Format gespeichert.

• Es werden nur folgende Typen unterstützt: None, Ganzzahlen, lange Ganzzahlen,

Fließkommazahlen, komplexe Zahlen, Strings, Tupel, Listen, Dictionaries und Code-Objekte.

Listen, Tupel und Dictionaries dürfen nur solche unterstützte Objekte enthalten.

Klasseninstanzen und rekursive Referenzen in Listen, Tupeln und Dictionaries werden nicht unterstützt.

• marshal ist wesentlich schneller als pickle, aber nicht so flexibel.

Siehe auch: pickle (Seite 89), shelve (Seite 115)

new

Verfügbarkeit: U, W, M

Das Modul new wird verwendet, um verschiedene Arten von Objekten zu erzeugen, die vom Interpreter benutzt werden. Der Hauptanwendungsbereich bei diesem Modul liegt bei Anwendungen, die Objekte in einer unregelmäßigen Weise erzeugen müssen (z.B. bei der Konstruktion von Daten mit dem Modul marshal).

instance(class, dict)

Erzeugt eine Klasseninstanz von class mit dem Dictionary dict, ohne die Methode __init__() aufzurufen.

instancemethod(function, instance, class)

Erzeugt ein an instance gebundenes Methodenobjekt. function muss ein aufrufbares Objekt sein. Falls instance gleich None ist, wird eine ungebundene Instanz erzeugt.

function(code, globals [, name [, argdefs]])

Erzeugt ein Funktionsobjekt aus dem angegebenen Code-Objekt und globalen Namensraum.

name ist der Name der Funktion oder gleich None (in diesem Fall wird der Funktionsname aus code.co_name übernommen). argdefs ist ein Tupel mit den Voreinstellungswerten der Parameter.

code(argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab)

Diese Funktion erzeugt ein neues Code-Objekt. Siehe Kapitel 3 für eine Beschreibung der Argumente.

module(name)

Erzeugt ein neues Modulobjekt mit dem Modulnamen name.

classobj(name, baseclass, dict)

Erzeugt ein neues Klassenobjekt. name ist der Klassenname, baseclasses ist ein Tupel mit Oberklassen und dict ist ein Dictionary, das den Namensraum der Klasse definiert.

Siehe auch: Kapitel 3.

operator

Verfügbarkeit: A

Das Modul operator stellt Funktionen bereit, mit denen der Zugriff auf eingebaute Operatoren und spezielle Methoden möglich ist (beschrieben in Kapitel 3). So ist z.B. add(3, 4) identisch mit 3+4.

Wenn der Name einer Funktion mit dem einer speziellen Methode übereinstimmt, kann sie auch mit ihrem Namen und doppelten Unterstrichen aufgerufen werden, z.B., __add__(3, 4).

Funktion Beschreibung

add(a, b) Ergibt a + b bei Zahlen.

sub(a, b) Ergibt a - b.

mul(a, b) Ergibt a * b bei Zahlen.

div(a, b) Ergibt a / b.

mod(a, b) Ergibt a % b.

neg(a) Ergibt -a.

pos(a) Ergibt +a.

abs(a) Ergibt Betrag von a.

inv(a) Ergibt Inverses Element von a.

lshift(a, b) Ergibt a << b.

rshift(a, b) Ergibt a >> b.

and_(a, b) Ergibt a & b (bitweises Und).

or_(a, b) Ergibt a b (bitweises Oder).

xor(a, b) Ergibt a ^ b (bitweises Xor).

not_(a) Ergibt nicht a.

truth(a) Ergibt 1, falls a wahr ist, sonst 0.

concat(a, b) Ergibt a + b bei Sequenzen.

repeat(a, b) Ergibt a * b bei einer Sequenz a und einer Ganzzahl b.

contains(a, b) Ergibt Ergebnis von b in a.

sequenceIncludes(a, b) Ergibt Ergebnis von b in a.

countOf(a, b) Ergibt Anzahl der Vorkommen von b in a.

indexOf(a, b) Ergibt Index des ersten Vorkommens von b in a.

getitem(a, b) Ergibt a[b].

setitem(a, b, c) a[b] = c.

delitem(a, b) del a[b].

getslice(a, b, c) Ergibt a[b:c].

setslice(a, b, c, v) Setzt a[b:c] = v.

delslice(a, b, c) del a[b:c].

Siehe auch: Kapitel 3 (spezielle Methoden).

Im Dokument Python Referenz (Seite 93-96)