在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
    定义变量
  • 这是一个适当结构的小例子。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())
    
    三个问题

  • 网络
    应该是一个数组,您要将其作为字符串传入
  • 您从不使用构造函数的参数
  • 如果您在
    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())
    

    您可能希望为网络和待定参数设置默认值:

    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()
    。此外,您正在传递一个字符串作为网络,而不是您所说的应该是列表。