2016-02-15 2 views
0

Я инициализируется свою очередь в конструкторе, например:Инициализация очереди в Python

class PingSweeper(): 

    def __init__(self,Networks,pending): 
     self.Networks = ['192.168.1.0/28'] 
     self.pending = queues.Queue() 

Когда я создаю объект PingSweeper, он ожидает, что сети и Pending быть переданы в качестве параметров. Вот как я создаю объект PingSweeper:

ping = PingSweeper('0.0.0.0',pending) 

Первые переменные сети, которая является массивом, поэтому я передаю «0.0.0.0», в ожидании есть очереди, и я не знаю, что передать в ожидании, и он говорит, что ожидающий не определен. Любая помощь будет принята с благодарностью.

+0

* Первая переменная сети, которая является массивом * - Тогда почему вы передаете строку? И вы ничего не делаете с параметрами, которые вы передаете в конструктор –

+0

, вы назначили что-либо '' ожиданию'', когда вы вызываете 'PingSweeper'? Это ваша первая проблема. Вторая проблема заключается в вашем '__init__', вы даже не используете значение' pending', которое вы передаете в '' __init__', потому что вы просто назначаете 'self.pending = queues.Queue()'. Кроме того, вы передаете строку, поскольку ваши сети вместо того, что вы сказали, должны быть списком. – idjaw

ответ

0

Три проблемы

  1. Networks должен быть массив, вы передаете его в виде строки
  2. Вы никогда не использовать параметры вашего конструктора
  3. Если вы получаете «сыгран не определен» в ping = PingSweeper('0.0.0.0',pending), это означает, что вы не определили переменную для pending в пределах этого объема

Вот небольшой пример го правильная структура. Также питона переменные должны быть строчными, как networks

import queue 

class PingSweeper(): 
    def __init__(self, networks, pending): 
     self.networks = networks 
     self.pending = pending 

scan_networks = ['192.168.1.0/28'] 
ping = PingSweeper(scan_networks, queue.Queue()) 

for net in ping.networks: 
    print("Ping:", net) 

ping.pending.put('0.0.0.0') 
ping.pending.put('127.0.0.0') 

while not ping.pending.empty(): 
    print("Scanning:", ping.pending.get()) 
0

Может быть, вы хотите установить значение по умолчанию для сетей и отложенных параметров:

import Queue 

class PingSweeper(): 
    def __init__(self, Networks=['192.168.1.0/28'], pending=Queue.Queue()): 
     self.Networks = Networks 
     self.pending = pending 
     print self.Networks 
     print self.pending 

ping = PingSweeper('0.0.0.0') 
ping.pending.put('192.168.1.1') 
ping.pending.put('192.168.1.2') 
print ping.pending.get() 
Смежные вопросы