所以這樣的問題,我無法弄清楚。也許我對Python的知識太少了。Python:函數調用後類屬性消失
問題是,該函數運行一次後,順利,另一次我得到另一個函數的錯誤。
功能,在這之後的事情打破:
def setFixedPriority(self, priority, lister):
step = priority/lister . __len__ ()
for j in range(0, lister . __len__()):
for i in range(0, self . listOfJobs . __len__ ()) :
if self . listOfJobs[ i ] . category == lister[ j ]:
self . listOfJobs[ i ] . priority += priority
elif self . listOfJobs[ i ] . jobType == lister[ j ]:
self . listOfJobs[ i ] . priority += priority
elif self . listOfJobs[ i ] . timeToDo == lister[ j ]:
self . listOfJobs[ i ] . priority += priority
priority -= step
self . sortByPriority()
功能中出現的問題:
def sortByPriority(self) :
tmp = range (1, self . listOfJobs . __len__ () + 1)
for i in reversed (tmp) :
for j in range (1, i) :
if self . listOfJobs [ j - 1 ] . priority < self . listOfJobs [ j ] . priority :
self . listOfJobs [ j - 1 ],
self . listOfJobs [ j ] = self . listOfJobst [ j ],
self . listOfJobs [ j - 1 ]
調用函數(從不同的Python腳本/文件/類):
self . jobs . setFixedPriority(int(self . settings[ 'Spinbox1' ]), self . settings[ 'type' ] . split(":"))
而我得到的錯誤:
File "data/ToDoListClass.py", line 82, in sortByPriority
self . listOfJobs [ j ] = self . listOfJobst [ j ],
AttributeError: jobList instance has no attribute 'listOfJobst'
我知道sortByPriority工作正常,因爲我在setFixedPriority之前調用過一次,它不會給我錯誤。
什麼可能導致這種情況發生?
不要直接訪問像'__len__'這樣的特殊方法。使用'len(x')。 – poke
此外,在調用''.''之間放置空格被認爲是一個非常奇怪的風格,因爲在任何方括號之前和之內放置空格。查看[PEP-8](http://www.python.org/dev/peps/pep-0008/)瞭解建議的樣式。 –
事實上,這整個事情看起來像混淆的代碼。循環遍歷索引在Python中是非常糟糕的風格(循環直接在項目上),並且循環遍歷1索引索引甚至更加怪異。 –