NameError: name 'self' ist nicht definiert - beim Versuch zu post Werte zu unterschiedlichen Warteschlangen
ist dies die richtige Art und Weise tun.ich bin ein Neuling in python
class main(threading.Thread):
queueLock = threading.Lock()
EppQueue = Queue.Queue(1)
CrQueue = Queue.Queue(1)
EPP = threading.Thread(name='EPP', target=EPP, args=(0,EppQueue,))
cr = threading.Thread(name='cr', target=CR, args=(0,CrQueue,))
EPP.setDaemon(True)
EPP.start()
Cr.start()
self.send_queue("EppQueue","sss")
self.send_queue("CrQueue","ssds")
def send_queue(self,queuename,qvalue,b=None):
if b is None:
b = self.queuename
self.queueLock.acquire()
self.b.put(qvalue)
self.queueLock.release()
wenn ich diesen starte, bekomme ich NameError: name 'self' ist nicht definiert ???
Bitte korrigieren Sie den Einzug, es ist nicht lesbar, sonst.
Dass der code gar nicht ausgeführt, wie diese!
Ich fixierte Ihre Einrückung der einzige Weg, ich könnte möglich denken, dass Sie gemeint ist.
war meine Antwort hilfreich ist..??..Wenn ja, dann bitte upvote und akzeptiere Sie..!!
Auch, obwohl es war nicht Ihre Frage, gibt es keine Notwendigkeit, in einen extra Verschluss, da
Dass der code gar nicht ausgeführt, wie diese!
Ich fixierte Ihre Einrückung der einzige Weg, ich könnte möglich denken, dass Sie gemeint ist.
war meine Antwort hilfreich ist..??..Wenn ja, dann bitte upvote und akzeptiere Sie..!!
Auch, obwohl es war nicht Ihre Frage, gibt es keine Notwendigkeit, in einen extra Verschluss, da
Queue
thread-sicher ist.InformationsquelleAutor Ragav | 2012-03-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die variable
self
(das erste argument zu einer Klasse-Methode - können Sie einen beliebigen Namen für Sie) gemeint ist, beziehen sich auf eine Klasse Instanz (auch ein Objekt). Sie selbst wo selbst ist nicht definiert, in der Klasse, in der keine spezifischen Objekt ist noch nicht bekannt.Wenn der code queueLock = threading.lock() ... etc, ist ausgeführt, Sie sind nicht in einer Klasse, Objekt (Instanz), sondern im Kontext der Klasse, so dass die Sperre die gleichen für alle Objekte der Klasse.
Über
send_queue
, es ist definiert und bekannt, um alle Objekte über die Klasse, so dass Sie nicht brauchen, um verwendenself.
zugreifen können.Wenn Sie möchten, dass einige code ausgeführt werden kann auf Instanz-Erstellung steckte es in
__init__
.self
, während Redakteure Farbe könnte es als Schlüsselwort, ist keine spezielle Bedeutung überhaupt an die Python-compiler. Es ist nur ein konventioneller name für das erste argument eine Instanz-Methode.Haters gonna hate... (+1)
@RikPoggi, "'\_(ˇ-ˇ)_/'"
InformationsquelleAutor Johan Lundberg
Können Sie nicht verwenden "selbst" für eine Klasse, variable /Funktion. die Sie verwenden können, "selbst" für eine Instanz von Klasse...
Beispiel :
A. x ist ein class-variable. B selbst.x ist eine Instanz-variable..!!
Auch für den Aufruf einer Funktion der Klasse..ist die beste Methode, um eine Instanz (Objekt) der Klasse und Rufen Sie die Funktion mit diesem Objekt..!!
Wie :
Und für die code zur Ausführung auf "Instanz" der Schöpfung, setzen Sie den code in
__init__():
FunktionInformationsquelleAutor Ramandeep Singh
Bitte stellen Sie sicher, dass die
send_queue
Funktion ist Teil der main-Klasse. Dieself
ist wiethis
Zeiger in C++ und muss einer Klasse zugeordnet. Diesend_queue
Funktion eingerückt werden soll, zusammen mit dermain
KlasseInformationsquelleAutor Gangadhar