0
爲什麼PyDev給我這個錯誤:當我嘗試爲反演計數算法實現一個簡單的類時,「Class variable undefined」?這是我的代碼:課堂作業問題
from collections import deque
Class inversionCount:
def __init__(self, n):
self.n = n
def inversionMergeSort(m, n):
print m
if len(m) <= 1:
n = 0
return (m, n)
half = len(m)/2
left = m[0:half]
right = m[half:]
left = mergeSort(left)
right = mergeSort(right)
return inversionSort(left, right)
def inversionSort(left, right, n):
leftQueue = deque(i for i in left)
rightQueue = deque(j for j in right)
orderedList = []
while len(leftQueue) > 0 or len(rightQueue) > 0:
if len(leftQueue) > 0 and len(rightQueue) > 0:
if leftQueue[0] < rightQueue[0]:
orderedList.append(leftQueue[0])
leftQueue.popleft()
else:
orderedList.append(rightQueue[0])
if len(leftQueue) > 1:
self.n += len(leftQueue)
rightQueue.popleft()
elif len(leftQueue) > 0:
orderedList.append(leftQueue[0])
leftQueue.popleft()
elif len(rightQueue) > 0:
orderedList.append(rightQueue[0])
rightQueue.popleft()
return (orderedList, n)
但PyDev未能認識到inversionCount確實是一個類。有什麼想法嗎?
另外,如果方法名稱空間中的inversionMergeSort()方法實際上是一個實例方法,則您在末尾調用'inversionsSort()'。你需要用'self'來稱呼它。我也不太清楚爲什麼你的'__init __()'中有'self.n',即使你永遠不會訪問它,並且把'n'作爲所需的參數傳遞給兩個方法。 –
@ sr2222:讓我們假設OP從來沒有達到那些點,因爲他被困在奇怪的'Class variable undefined'錯誤。 :-) –
@MartijnPieters足夠公平,看起來像是有一個設計問題出現在這裏,可能與「Python不是Java」有關的誤解。 –