[英]How can i call the class method in python?
我創建了一個名為 LinkedList 的 class 和一個名為 find() 的 class 內部的方法。
我試圖在 function 中調用此方法,但它總是返回以下錯誤:
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'
我有另一個名為 Node 的 class,但我認為這不會影響任何事情。
請有人幫助我。 我不知道出了什么問題......
這是整個代碼的鏈接: https://repl.it/@Mimik1/InsertionSortWithLinkedList#main.py
這是一個大學項目,所以我根本無法更改二進制插入排序,但如果它是錯誤的,請告訴我。
您的 class 結構表明鏈表包含節點鏈。 因此,當您調用l.head
時,您會返回一個Node
而不是另一個LinkedList
,這就是您遇到錯誤的原因。 Node
沒有LinkedList
具有的操作。 您可以設計您的LinkedList
,使其在鏈中的每個鏈接處由其自身組成,而不是由Node
組成,這將緩解此問題。
問題的 scope 之外的其他一些評論:
我注意到您將一些 integer 類型 arguments 設置為默認值None
。 通常,將它們設置為默認 integer 似乎更好(如 main.py 第 23 行中的 0)。
我還會查看您添加節點的邏輯,因為直觀地看起來頭部不應該隨着我添加更多節點而改變。 列表的頭部是不變的,而我會假設列表的尾部始終是最后一個節點。
在 LinkedList.py 中的方法添加中,您將節點 object 分配給成員頭。 稍后將其提供給BinaryInsertionSort
,它需要 LinkedList 類型的 Object 而不是節點。 所以問題是 main.py 第 44 行中的調用BinaryInsertionSort(l.head, l.length())
。通過item = list.find(i).data
調用 class 方法沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.