在Python中初始化队列
我已在构造函数中初始化队列,如下所示:在Python中初始化队列,python,Python,我已在构造函数中初始化队列,如下所示: class PingSweeper(): def __init__(self,Networks,pending): self.Networks = ['192.168.1.0/28'] self.pending = queues.Queue() 当我创建PingSweeper对象时,它希望网络和挂起作为参数传入。以下是我创建PingSweeper对象的方式: ping = PingSweeper('0.0.0.
class PingSweeper():
def __init__(self,Networks,pending):
self.Networks = ['192.168.1.0/28']
self.pending = queues.Queue()
当我创建PingSweeper对象时,它希望网络和挂起作为参数传入。以下是我创建PingSweeper对象的方式:
ping = PingSweeper('0.0.0.0',pending)
第一个变量是Networks,它是一个数组,所以我要传递'0.0.0.0',pending是一个队列,我不知道传递什么作为pending,它告诉我pending没有定义。任何帮助都将不胜感激。三个问题
网络
应该是一个数组,您要将其作为字符串传入ping=PingSweeper('0.0.0.0',pending)
处得到“pending is not defined”,这意味着您尚未在该范围内为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())
三个问题
网络
应该是一个数组,您要将其作为字符串传入ping=PingSweeper('0.0.0.0',pending)
处得到“pending is not defined”,这意味着您尚未在该范围内为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())
您可能希望为网络和待定参数设置默认值:
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()
您可能希望为网络和待定参数设置默认值:
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()
第一个变量是Networks,它是一个数组,那么为什么要传递字符串呢?当您调用
PingSweeper
时,您没有对传递到构造函数中的参数执行任何操作,也没有向pending
分配任何内容?这是你的第一个问题。第二个问题是在\uuuu init\uuuu
中,您甚至没有使用传递给\uuuu init\uuuuu
的挂起值,因为您只是分配self.pending=queues.Queue()
。此外,您将字符串作为网络传递,而不是您所说的应该是列表。第一个变量是网络,它是一个数组-那么为什么要传递字符串?当您调用PingSweeper
时,您没有对传递到构造函数中的参数执行任何操作,也没有向pending
分配任何内容?这是你的第一个问题。第二个问题是在\uuuu init\uuuu
中,您甚至没有使用传递给\uuuu init\uuuuu
的挂起值,因为您只是分配self.pending=queues.Queue()
。此外,您正在传递一个字符串作为网络,而不是您所说的应该是列表。