在Python中初始化队列

2024-10-02 22:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在构造函数中初始化了队列,如下所示:

class PingSweeper():

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

当我创建一个PingSweeper对象时,它期望Networks和Pending作为参数传入。下面是我如何创建PingSweeper对象:

^{pr2}$

第一个变量是Networks,它是一个数组,所以我传递的是'0.0.0.0',pending是一个队列,我不知道要传递什么作为pending,它告诉我pending没有定义。任何帮助都将不胜感激。在


Tags: 对象self参数队列queueinitdef数组
2条回答

您可能希望设置网络和挂起参数的默认值:

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()

三个问题

  1. Networks应该是一个数组,您将它作为一个字符串传入
  2. 你从不使用构造函数的参数
  3. 如果在ping = PingSweeper('0.0.0.0',pending)处得到“pending is not defined”,这意味着您尚未在该范围内为pending定义变量

下面是一个适当结构的小例子。python变量也应该是小写的,比如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())

相关问题 更多 >