NameError: name 'moi' n'est pas défini lorsque vous essayez de poster des valeurs différentes files d'attente
est-ce la bonne façon de faire.je suis un débutant en 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()
lorsque je l'exécute-je obtenir NameError: name 'soi' n'est pas défini ???
Veuillez fixer l'indentation, c'est pas lisible autrement.
Ce code ne serait même pas courir comme ça!
J'ai corrigé votre indentation le seul moyen je pense que vous avez voulu dire.
ma réponse fut utile..??..Si oui, alors s'il vous plaît upvote et à l'accepter..!!
Aussi, même si elle n'était pas à votre question, il n'est pas nécessaire pour l'utilisation d'un verrou depuis
Ce code ne serait même pas courir comme ça!
J'ai corrigé votre indentation le seul moyen je pense que vous avez voulu dire.
ma réponse fut utile..??..Si oui, alors s'il vous plaît upvote et à l'accepter..!!
Aussi, même si elle n'était pas à votre question, il n'est pas nécessaire pour l'utilisation d'un verrou depuis
Queue
est thread-safe.
OriginalL'auteur Ragav | 2012-03-10
Vous devez vous connecter pour publier un commentaire.
La variable
self
(le premier argument à une méthode de classe - vous pouvez utiliser n'importe quel nom) est censé se référer à une classe instance (également appelé un objet). Vous utilisez l'auto où l'auto n'est pas définie dans la classe où aucun objet n'est pas encore connue.Lorsque le code queueLock = filetage.lock() ... etc, est exécuté vous n'êtes pas dans une classe de l'objet (instance), mais dans le contexte de la classe, de sorte que votre serrure sont les mêmes pour tous les objets de la classe.
Sur
send_queue
, il est défini et connu de tous les objets à l'aide de la classe, de sorte que vous n'avez pas besoin d'utiliserself.
pour y accéder.Si vous voulez un peu de code à exécuter à la création de l'instance de la mettre dans
__init__
.self
, tandis que les éditeurs peuvent mettre de la couleur en tant que mot clé, a pas de signification particulière que ce soit pour le compilateur Python. C'est juste un nom conventionnel pour le premier argument d'une méthode d'instance.Haters gonna hate... (+1)
@RikPoggi, "'\_(*-*)_/'"
OriginalL'auteur Johan Lundberg
Vous ne pouvez pas utiliser "auto" pour une variable de Classe /fonction..Vous pouvez utiliser "auto" pour une instance de la Classe...
Par exemple :
A. x est une variable de classe. B soi-même.x est une variable d'instance..!!
Aussi pour l'appel d'une fonction de Classe..la meilleure pratique consiste à créer une instance (Objet) de la Classe et Appeler la fonction de cet Objet..!!
Comme :
Et pour le code à exécuter sur une "instance" de la création, de placer ce code dans
__init__():
fonctionOriginalL'auteur Ramandeep Singh
Assurez-vous que le
send_queue
fonction est une partie de la classe principale. Leself
est commethis
pointeur en C++ et doit être associé à une classe. Lesend_queue
fonction doit être mis en retrait le long de lamain
classeOriginalL'auteur Gangadhar