Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:enqueuqe接受1个位置参数,但传递了2个_Python_Python 3.x - Fatal编程技术网

Python TypeError:enqueuqe接受1个位置参数,但传递了2个

Python TypeError:enqueuqe接受1个位置参数,但传递了2个,python,python-3.x,Python,Python 3.x,只传递一个参数。但我还是得到了一个错误,已经传递了两个参数。头部和尾部未初始化为-1 class Queue_demo: head=-1 tail=-1 a=[] def enqueue(data=10): if(head==-1 and tail==-1): head=head+1 tail=tail+1 a.append(data) else:

只传递一个参数。但我还是得到了一个错误,已经传递了两个参数。头部和尾部未初始化为-1

class Queue_demo:
    head=-1
    tail=-1
    a=[]

    def enqueue(data=10):
        if(head==-1 and tail==-1):
            head=head+1
            tail=tail+1
            a.append(data)
        else:
            tail=tail+1
            a.append(data)

    def dequeue():
        y=a[head]
        if(head==tail):
            head,tail=-1,-1
        else:
            head=head+1
        return y

q1=Queue_demo()
q2=Queue_demo()
q1.enqueue(12)

while(q1.tail==-1):
    print(q1.dequeue())

您的代码存在一些问题

直接导致您的错误的原因是您没有给您的方法一个自我论证。当您调用q1.enqueue12时,Python会将其转换为Queue_demo.enqueueq1,12。调用该方法的对象作为第一个参数传递给该方法。按照惯例,它通常被命名为self

这就引出了第二个问题,一旦你通过了错误数量的参数错误,你就会遇到这个问题。您的实例将共享同一组数据成员,因为它们当前正在访问类变量head、tail和a,而不是实例变量。这将非常混乱,因为向一个队列中添加一个项目也会使它出现在所有其他队列中

要解决这个问题,您需要做的是在构造函数中创建这些变量,该构造函数只是一个名为uu init_uu的方法,而不是在类定义中定义它们。下面是您的_uinit _;方法可能的样子:

def __init__(self):
    self.head = -1
    self.tail = -1
    self.a = []

请记住,Python通常不同于其他编程语言!您不需要声明您的成员变量,只需开始在self上以值的形式分配内容,就可以全部设置。

您的代码存在一些问题

直接导致您的错误的原因是您没有给您的方法一个自我论证。当您调用q1.enqueue12时,Python会将其转换为Queue_demo.enqueueq1,12。调用该方法的对象作为第一个参数传递给该方法。按照惯例,它通常被命名为self

这就引出了第二个问题,一旦你通过了错误数量的参数错误,你就会遇到这个问题。您的实例将共享同一组数据成员,因为它们当前正在访问类变量head、tail和a,而不是实例变量。这将非常混乱,因为向一个队列中添加一个项目也会使它出现在所有其他队列中

要解决这个问题,您需要做的是在构造函数中创建这些变量,该构造函数只是一个名为uu init_uu的方法,而不是在类定义中定义它们。下面是您的_uinit _;方法可能的样子:

def __init__(self):
    self.head = -1
    self.tail = -1
    self.a = []
请记住,Python通常不同于其他编程语言!您不需要声明您的成员变量,只需开始在self上以值的形式分配东西,就可以全部设置好了