【问题标题】:TypeError: __init__() takes 1 positional argument but 2 were given -- errors comes up when creating stack class by numPyTypeError: __init__() 接受 1 个位置参数,但给出了 2 个 - 通过 numPy 创建堆栈类时出现错误
【发布时间】:2021-08-29 03:13:57
【问题描述】:

我想使用 numPy 数组创建一个堆栈类,但出现此错误

TypeError: init() 接受 1 个位置参数,但给出了 2 个

import numpy as np

class Stack:
    def __init__(self):
        self.Stack =np.Stack([])

    def push(self,data):
            return self.Stack.append(data)
            print("stack overfolow")

    def pop(self):
        if len(self.Stack)==0:
            print("stack underflow")
        else:
            return self.Stack.pop()
    def __len(self):
        return len(self.Stack)

    def top(self):
        if len(self.Stack)==0:
            print("stack under flow")
        else:
            return self.Stack[len(self.Stack)-1]

    def is_empty(self):
        return len(self.Stack) == 0

    def is_full(self):
        return len(self.Stack) == self.limit


    def size(self):
        return len(self.Stack)

【问题讨论】:

  • 在哪一行?不要将你的类命名为与属性相同
  • np.Stack 不存在,所以?
  • 在使用 numpy 尝试之前先使用列表。
  • 报告完整的错误,而不仅仅是徒手的近似值。
  • 如果您显示调用/构造您的对象的代码 - 即我们可以剪切和粘贴并自己运行的完整代码 - 以及其他人询问的完整堆栈跟踪,将会很有帮助。跨度>

标签: python arrays numpy stack


【解决方案1】:

self.Stack =np.Stack([]) 替换为self.stack = np.stack([0,0])

原因,numpy 有一个方法堆栈,可以将 2 个数组相互堆叠,它需要堆叠一些东西。此外,通过使用小写而不是大写,您可以关注pep8 recomendation

即使很难,我相信你想要的是将np.stack替换为np.array,原因是你现在不需要堆叠任何东西,只需要堆栈的返回值,它本身就是一个np.array

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2023-03-03
    • 2015-07-13
    • 2018-06-21
    相关资源
    最近更新 更多