2015-01-07 1 views
0

Я пытаюсь создать свой собственный тип списка с новым классом называется TZList, Я пытался создать его с помощью рекурсивного __init__ FUNC, но он не будет работать, здесь код:Попытка рекурсивный конструктор для списка, как АБР

class TZList: 
    def __init__(self, *args): 
     numargs = len(args) 
     self.value = None 
     self.next = None 

     if numargs == 0: 
      self.value = None 
      self.next = None 
     elif numargs == 1: 
      self.value = args[0] 
      self.next = None 
     else: 
       self.value = args[0] 
       numargs -= 1 
       args = args[1:] 
       self.next = TZList(args) 

, когда я пытаюсь получить данные, как это:

t = TZList(1,2,3) 
print(t.value) 
print(t.next.value) 
print(t.next.next.value) 

я получаю странные печати:

Traceback (most recent call last): 
1 
(2, 3) 
    File "C:\****\a3.py", line 79, in <module> 
    print(t.next.next.value) 
AttributeError: 'NoneType' object has no attribute 'value' 

и я понятия не имею, почему, надеюсь, вы могли бы мне помочь.

ответ

2

Причина в том, что вы перенаправляете args в TZList. Вы передаете его как кортеж. Вместо self.next = TZList(args) do self.next = TZList(*args)

+0

Работает как очарование, спасибо большое! – argamanza

Смежные вопросы