技術とメンタル

技術的なことと考えていることのアウトプット

AttributeError: 'NoneType' object has no attribute ' ' の原因

Pythonの勉強中に、
AttributeError: 'NoneType' object has no attribute '自分の書いた何か'
というエラーが吐かれた。
最近はよく出てきてたのでがっつりtry&errorを繰り返していたら原因がわかった。

結論から言うと"None"に対してアクセスしようとして起こる。


例えば以下のような.dataと.nextによって構成される Linked List に対してダブりを消去するプログラム(一部) で

    def RemoveDuplicates(self,head):
        current2 = head
        while current2:
            if current2.data == current2.next.data:
                current2.next = current2.next.next
            else:
                current2 = current2.next           
        return head

と記述するとエラーが吐かれるが、
while文の条件を

while current2.next:

と書き換えればエラーは出ない。

※linked list だから最後の要素の .next は "None" である。

同じようなエラーで悩んでる人がいたら、確認してみては。