あえてPythonの弱点をあげてみる

変数に型がないということの利点について考えるを読んで。

class A(object):
  def __init__(self):
    self.length = 0
  def get_length(self):
    return self.length

a=A()
if something==wrong:
  logger.error('Length: %s'%a.get_lenght())

要するにエラー処理の中でタイポしちゃったりすると、テストを入念にやらないと、エラー時に始めてバグを召喚するという事態になる。

まぁEclipse+PyDev使ってればこの辺は気付けるけどgeditとか素のviでちょちょっと書いてはまる罠。

あと他人に使って欲しいライブラリを書く時、

Class A{
  public void load(String s){}
  public void load(File file){}
  public void load(InputStream is){}
}

が、

class A(object):
  def load_from_str(s):
    pass
  def load_from_file(filename):
    pass
  def load_from_fp(fp):
    pass

みたいに意味を付けてあげなきゃならなくなる。ぜんぶload()に統合すると何からロード出来るのかドキュメントを書く手間が別途発生する。

ドキュメントは必ず書けよという話ですが。