StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

Mercurialを読む(Pythonの慣例を知る)

どうやらMercurialで用いるclass名は小文字みたいだ.
ジャバジャバしてきた私には,大文字で始まってないと気持ち悪い.
そして_で始まる関数名とそうでないのがある.internal useというところか.
Rubyではあるまいし.

        if feature and exceptions:
            return feature not in exceptions

こういう表記も意味がわからん.

        if not path and default is not None:
            path = self.config('paths', default)
        return path or loc

セマンティクスが違うものを返す点もよくわからん.名前からしてpathは文字列.locは番号じゃないのか?

   @property
    def _end_headers(self):
        return self._eol * 2

うお.ここだけアノテーション(?)ついてる.

__all__ = ['HTTPConnection', 'HTTPResponse']

なんだこりゃ.__slots__のようにみえるけど,グローバル変数__all__てのがあるみたいだ.

などなど.疑問がいっぱいです♪

追記:マニュアル(http://www.python.jp/doc/2.4/ref/import.html)より.
モジュールで 公開されている名前 (public names) は、 モジュールの名前空間内にある __all__ という名前の変数 を調べて決定します; __all__ が定義されている場合、 __all__ はモジュールで定義されていたり、import されている ような名前の文字列からなるシーケンスでなければなりません。 __all__ 内にある名前は、全て公開された名前であり、 実在するものとみなされます。 __all__ が定義されていない場合、モジュールの名前空間に 見つかった名前で、アンダースコア文字 ("_") で始まっていない 全ての名前が公開された名前になります。 __all__ には、公開されている API 全てを入れなければなりません。 __all__ には、(モジュール内で import されて使われている ライブラリモジュールのように) API を構成しない要素を意に反して 公開してしまうのを避けるという意図があります。


これは便利だ!!次回はコレを使うぞ.