zugreifen Ich muss eine Klasse erstellen, die einen Zufallsgenerator (d. H. Ein numpy.random.RandomState
Objekt) als Parameter übernimmt. Wenn dieses Argument nicht angegeben ist, möchte ich es dem Zufallsgenerator zuweisen, den numpy verwendet, wenn wir numpy.random.<random-method>
ausführen. Wie greife ich auf diesen globalen Generator zu? Momentan mache ich das, indem ich das Modul-Objekt einfach als Zufallsgenerator (da sie Methoden teilen/Duck-Typisierung) zuweisen. Dies verursacht jedoch Probleme beim Beizen (das Modulobjekt kann nicht beigemischt werden) und beim Tiefkopieren. Ich möchte das RandomState Objekt hinter numpy.randomWie numpy Standard globalen Zufallszahlengenerator
PS verwenden: Ich verwende Python-3,4
@ user2357112 Im Allgemeinen würde ich nicht erwarten, dass Module picklable sein, da sie alle Arten von unpicklable Objekten (C-Erweiterungen, Lambda-Ausdrücke, Verschlüssen etc.) enthalten können –
@ali_m: Ich konnte Ich habe geschworen, sie waren mit Namen und Pick-up-Pickled, genau wie Funktionen und Klassen, aber anscheinend nicht. Wenn ich es versuche, bekomme ich auch einen Fehler. – user2357112
@ user2357112 Es gibt nichts * intrinsisch * unpicklable über Module. Solange sie nur einfügbare Objekte enthalten, geht es Ihnen gut, aber für die meisten nicht-trivialen Module ist dies nicht der Fall. Zum Beispiel ist numpy mit nicht wiederholbaren C-Erweiterungen gespickt. –