簡體   English   中英

如何在 python 中調用 class 方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM