バージョン管理された人

subversionで管理されてます

Pythonのclassの構文について

タイトルのまんま.

Pythonのclass構文はJavaなどのように特殊な構文解析を実装しているわけではないらしい. python-history-jp.blogspot.com 単純にclass:の後ろに書いてある文を無名関数に入れて, クラス辞書というクラスの情報を管理するための辞書に, クラス変数やメソッドの情報を入れているだけ. Python的に正しい文であれば(returnを除いて)valid. なので, 次のような例もOK.

class Double:
    a = []

    for i in range(10):
        if i % 2 == 0:
            a.append(i * 2)

print(Double.a) # [0, 4, 8, 12, 16]が表示される

wandbox.org

あまり使うとは思わないけど, 例えば環境変数によって用意するクラスやメソッドを変えたいとか, withimport時にファイルの中身を利用してなにかしたいときとかに使える...のだろうか.

ちなみにクラスをインポートしたものはdelで削除できる(例えばimport randomとしたものをdel randomでアンインポート(?)できる). これを使って, withとか環境変数とかで何かできるかもしれない. ただ, これはこの挙動を知っているものでしか通用しないので, あまり使わない方が良いのかもしれない.