Welcome to touyou note!!

こんにちは。touyouです。touyou noteは、creativeな人間を志すちっぽけな学生が様々なことに体当たりするブログです。
どうぞお楽しみ下さい。

Twitter: @touyoubuntu
HomePage: TOUYOUBUNTU

検索用ワード

PC Linux Windows Cygwin Android Python Java C/C++ C# HTML Processing Lisp Perl Arduino Japanino Unity Google TopCorder Codeforces Vim Emacs Github PSP Gundam Soccer Mobile Dialy Study Music ...

2010年2月12日金曜日

乗り越えがたい難所

__getitem__・・・
ググったらしっかり出てきましたが、
どうしてもlist参照時にエラーが・・・

2 件のコメント:

  1. Traceback (most recent call last):
    File "venn.py", line 58, in
    venn(n)
    File "venn.py", line 28, in venn
    i = y[0]
    AttributeError: algo instance has no attribute '__getitem__'

    このエラーは
    「algo のインスタンスである y には __getitem__ というメソッドが無い」
    ということをいっています。
    (クラス algo から作られたオブジェクトを 「algo の インスタンス」といいます)
    今の所、algo クラスのメソッドは per と com だけですよね。

    __getitem__ というのは、自作クラスのインスタンスに、リスト型やマップ型の機能を
    追加する時に必要になるメソッドです。

    では、なぜ python が __getitem__ などというメソッドを呼び出そうとしたのか。
    28行目の、この記述のせいです。
    >>> i = y[0]
    y というのは 27行目で
    >>> y = algo(n,1)
    作られた、algo のインスタンスですよね。
    リスト型でも、マップ型でもないオブジェクトに角かっこを付けて、
    y[0] のようにしています。
    これが原因です。


    追伸
    以下は僕の感想です。読み飛ばしてもいいですよ。

    今回のエラーを取り除いても、すぐ次のエラーが出ることでしょう。
    最後まで動かすのに、たぶん10個以上のエラーと格闘する必要があります。
    そして、やっと動いたとしてもそれは「とりあえず動いた」だけ。
    その先にはエラーも出ないバグが待っていることでしょう。

    プログラミングには時間がかかります。
    勉強も必要です。
    それでもやりますか?
    今やらなくてもいいのでは?

    返信削除
  2. コメントありがとうございます。
    しかし、ぼくは一度はじめたことを途中で止めるのが性に合わないのでこれからもプログラミングの勉強は続けていこうと思っています。

    返信削除