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]が表示される
あまり使うとは思わないけど, 例えば環境変数によって用意するクラスやメソッドを変えたいとか,
with
でimport
時にファイルの中身を利用してなにかしたいときとかに使える...のだろうか.
ちなみにクラスをインポートしたものはdel
で削除できる(例えばimport random
としたものをdel random
でアンインポート(?)できる).
これを使って, with
とか環境変数とかで何かできるかもしれない.
ただ, これはこの挙動を知っているものでしか通用しないので, あまり使わない方が良いのかもしれない.