Решен: Изглежда, че проблемът възниква само с PythonWin. Проведох всичко през Python shell на IDLE и работи добре. Трябва да е грешка в PythonWin, а не в самия код.
Изглежда не мога да разбера защо следният код ми дава TypeError: 'type' object is not iterable
pastebin: http://pastebin.com/VFZYY4v0
def genList(self):
#recursively generates a sorted list of child node values
numList = []
if self.leftChild != 'none':
numList.extend(self.leftChild.genList()) #error
numList.extend(list((self.Value,)))
if self.rightChild != 'none':
numList.extend(self.rightChild.genList()) #error
return numList
код, който добавя дъщерни възли (работи правилно)
def addChild(self, child):
#add a child node. working
if child.Value < self.Value:
if self.leftChild == 'none':
self.leftChild = child
child.parent = self
else:
self.leftChild.addChild(child)
elif child.Value > self.Value:
if self.rightChild == 'none':
self.rightChild = child
child.parent = self
else:
self.rightChild.addChild(child)
Всяка помощ ще бъде оценена.
Пълна интерпретаторска сесия: ››› импортиране на BinTreeNode като BTN
››› node1 = BTN.BinaryTreeNode(5)
››› node2 = BTN.BinaryTreeNode(2)
››› node3 = BTN.BinaryTreeNode(12)
››› възел3 = BTN.BinaryTreeNode(16)
››› възел4 = BTN.BinaryTreeNode(4)
››› възел5 = BTN.BinaryTreeNode(13 )
››› node1.addChild(node2)
››› node1.addChild(node3)
››› node1.addChild(node4)
››› node1.addChild (node5)
››› node4.genList()
‹class 'list'›
››› node1.genList()
Проследяване (последното последно извикване):< br /> Файл „‹interactive input›“, ред 1, в ‹module›
Файл „C:...\python\BinTreeNode.py“, ред 47, в genList
numList.extend( self.leftChild.genList()) #грешка
Файл "C:...\python\BinTreeNode.py", ред 52, в genList
TypeError: обектът 'type' не може да се повтори
numList.extend()
винаги ще получава екземпляр на списък. Имам чувството, че това ще бъде разрешено само като видя целия код :-/ - person jdi   schedule 01.12.2012numList.extend(list((self.Value,)))
изглежда, че трябва да е самоnumList.append(self.Value)
... (това не е ваш проблем, но би било по-малко объркващо) -- Да не сте засенчвали вграденияlist
нали? - person mgilson   schedule 01.12.2012a = []; a.extend(list((1,))); print(a)
ви дава[1]
, а не[[1]]
- person mgilson   schedule 01.12.2012genList()
метод няма нищо, което да показва, че връщате тип вместо екземпляр на списък. И все пак изходът ви показва, чеgenList()
връща тип клас. - person jdi   schedule 01.12.2012