Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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 为什么PyDev在调用类方法时需要一个对象来代替Self?_Python_Eclipse_Parameters_Self_Method Call - Fatal编程技术网

Python 为什么PyDev在调用类方法时需要一个对象来代替Self?

Python 为什么PyDev在调用类方法时需要一个对象来代替Self?,python,eclipse,parameters,self,method-call,Python,Eclipse,Parameters,Self,Method Call,因此,我对Python还不熟悉,但我看到了Python最近的流行趋势,所以我决定尝试一下,学习一下Python语言。我首先使用PyCharm IDE开发了一个简单的ArrayList,完全没有任何问题。现在,我决定将PyDev插件用于Eclipse的一个新项目,即二进制搜索树。我在PyDev中遇到的问题是,当我创建一个类方法时,Self关键字是参数之一,PyDev实际上似乎要求我在调用的方法的参数中放置一个对象。下面是一个例子: def addNode(self, data): if(s

因此,我对Python还不熟悉,但我看到了Python最近的流行趋势,所以我决定尝试一下,学习一下Python语言。我首先使用PyCharm IDE开发了一个简单的ArrayList,完全没有任何问题。现在,我决定将PyDev插件用于Eclipse的一个新项目,即二进制搜索树。我在PyDev中遇到的问题是,当我创建一个类方法时,Self关键字是参数之一,PyDev实际上似乎要求我在调用的方法的参数中放置一个对象。下面是一个例子:

def addNode(self, data):
    if(self.__root):
        self.__addNode(self, self.__root, data)
    else:
        self.__root = TreeNode(data)

    self.__size += 1
    self.printTree(self, self.__root)    

def __addNode(self, node, data):
    if(data != None and node != None):
        if(data <= node.getData()):
            if(node.getLeftChild() == None):
                node.setLeft(TreeNode(data))
            else:
                self.__addNode(node.getLeftChild, data)
        else:
            if(node.getRightChild() == None):
                node.setRight(TreeNode(data))
            else:
                self.__addNode(node.getRightChild(), data)
我得到以下输出:

Traceback (most recent call last):
  File "C:\Users\------\workspace\BinarySearchTree\Main.py", line 9, in <module>
    bst.addNode(5)
TypeError: addNode() missing 1 required positional argument: 'data'
我得到了我想要的输出:

5 
4 5 
4 5 6 

所以我的问题是,为什么当PyCharm没有给我这个问题的时候,PyDev调用类方法时需要一个对象来代替self?我有两个IDE使用相同的解释器。

您没有实例化BST对象。要在Python中实现这一点,需要调用类:

bst = BinarySearchTree()

在代码中,您是在类本身而不是在实例上调用方法。

您没有实例化BST对象。要在Python中实现这一点,需要调用类:

bst = BinarySearchTree()

在代码中,您是在类本身上调用方法,而不是在实例上调用方法。

bahahaha,哇,有时候我遇到的问题太简单了。我想我看到了一个没有参数的类在没有打开/关闭parenthase的情况下被初始化的例子,但是我想我没有完全理解代码的上下文,谢谢你的帮助!哈哈哈,哇,有时候我遇到的问题太简单了。我想我看到了一个没有参数的类在没有打开/关闭parenthase的情况下被初始化的例子,但是我想我没有完全理解代码的上下文,谢谢你的帮助!
bst = BinarySearchTree()