如何在python中调用类方法?
我创建了一个名为LinkedList的类和一个名为find()的类内方法 我试图在函数内调用此方法,但它总是返回以下错误:如何在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
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。我想这意味着算法无法正常工作。如果您有一个带有最少示例的特定问题,您可以创建另一个问题。这个问题得到了回答。你可以接受其中一个答案。