Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.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中调用类方法?_Python - Fatal编程技术网

如何在python中调用类方法?

如何在python中调用类方法?,python,Python,我创建了一个名为LinkedList的类和一个名为find()的类内方法 我试图在函数内调用此方法,但它总是返回以下错误: Traceback (most recent call last): File "main.py", line 44, in <module> BinaryInsertionSort(l.head, l.length()) File "main.py", line 26, in BinaryInsertionSort item = lis

我创建了一个名为LinkedList的类和一个名为find()的类内方法

我试图在函数内调用此方法,但它总是返回以下错误:

Traceback (most recent call last):
  File "main.py", line 44, in <module>
    BinaryInsertionSort(l.head, l.length())
  File "main.py", line 26, in BinaryInsertionSort
    item = list.find(i).data
AttributeError: 'Node' object has no attribute 'find'
回溯(最近一次呼叫最后一次):
文件“main.py”,第44行,在
二进制插入排序(l.head,l.length())
BinaryInsertionSort中的文件“main.py”,第26行
item=列表.查找(i).数据
AttributeError:“节点”对象没有属性“查找”
我有另一个类叫做Node,但我认为这不会影响任何东西

求求你,有人帮帮我!我不知道怎么了

以下是完整代码的链接:


这是一个大学项目,所以我根本无法更改二进制插入排序,但如果它是错误的,请告诉我。

您的类结构声明链接列表包含一个节点链。因此,当调用
l.head
时,返回的是一个
节点
,而不是另一个
链接列表
,这就是您遇到错误的原因。
节点
没有
链接列表
所具有的操作。您可以设计
LinkedList
,使其在链中的每个链接上都由自身组成,而不是由
节点组成,这将缓解此问题

问题范围之外的其他一些评论:

我注意到您将一些整数类型参数设置为默认值
None
。通常,最好将它们设置为默认整数(如main.py第23行中的0)


我还想看看您添加节点的逻辑,因为直观上看,头部似乎不应该随着我添加更多节点而改变。列表的头是不变的,而我假设列表的尾总是最后一个节点。

您的类结构声明链接列表包含一个节点链。因此,当调用
l.head
时,返回的是一个
节点
,而不是另一个
链接列表
,这就是您遇到错误的原因。
节点
没有
链接列表
所具有的操作。您可以设计
LinkedList
,使其在链中的每个链接上都由自身组成,而不是由
节点组成,这将缓解此问题

问题范围之外的其他一些评论:

我注意到您将一些整数类型参数设置为默认值
None
。通常,最好将它们设置为默认整数(如main.py第23行中的0)


我还想看看您添加节点的逻辑,因为直观上看,头部似乎不应该随着我添加更多节点而改变。列表的头是不变的,而我假设列表的尾始终是最后一个节点。

在方法add中的LinkedList.py中,您可以将节点对象指定给成员头。这将在稍后提供给
BinaryInsertionSort
,它需要LinkedList而不是Node类型的对象。因此,问题在于main.py行44中的调用
BinaryInsertionSort(l.head,l.length())
item=list.find(i).data对class方法的调用没有问题。

在方法add中的LinkedList.py中,您可以将节点对象分配给成员头。这将在稍后提供给
BinaryInsertionSort
,它需要LinkedList而不是Node类型的对象。因此,问题在于main.py行44中的调用
BinaryInsertionSort(l.head,l.length())
。通过
item=list.find(i.data)
调用class方法没有问题。

试试
BinaryInsertionSort(l,l.length())
另外,最好不要覆盖内置的Python函数/关键字,例如
list
(尽管听起来好像你没有编写这部分代码)。这最终会导致问题,或者至少会造成混乱。请尝试
BinaryInsertionSort(l,l.length())
此外,最好不要覆盖内置的Python函数/关键字,例如
list
(尽管听起来好像您没有编写这部分代码)。这最终会导致问题,或者至少会引起混乱。正如Justin Ezequiel所说,我更改了对BinaryInsertionSort(l,l.length())的调用,但不知何故它返回了4 5 3。我想这意味着算法无法正常工作。如果您有一个带有最少示例的特定问题,您可以创建另一个问题。这个问题得到了回答。您可以接受其中一个答案。正如Justin Ezequiel所说,我更改了对BinaryInsertionSort(l,l.length())的调用,但它以某种方式返回了4 5 3。我想这意味着算法无法正常工作。如果您有一个带有最少示例的特定问题,您可以创建另一个问题。这个问题得到了回答。你可以接受其中一个答案。