Python.use(better) #Tutor: step00 -- Tk()

記事一覧 Python.use(better)《Python3.1》

Tk()

《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

基礎編で利用した学習ツールを作成する過程を通して「プログラミング」の理解を深めます。
※ Tcl/Tk で作成した例題を、Python3.1 で再構成しました。

事例:モジュールを起動する

■ 全項目を確認する

全ステップの「項目」を確認するには、関数 do を利用します。

$ python -i tutorTk.py
>>> do()
0: step00 -- Tk()
1: step01 -- class Tutor(object):
2: step02 -- def create_controller(self, master, target):
3: step03 -- def __call__(self, widget):
4: step04 -- def create_Frame(self, master):
5: step05 -- def create_Scrollbar(self, master, listbox, orient):
6: step06 -- def create_view(self, master):
7: step07 -- def do_help(self, view, target, item):
8: step08 -- def do_test(self, view, target, item):
9: step09 -- def eval_tips(self, view, target, item):
>>>
■ 各項目を実行する

各ステップの「動作」を確認するには、関数 do に実引数を指定します。

>>> do(0)


>>> # -------------------------------------------------- step00
    
>>> >>> s = Stack(); s.items [] >>> push(s, "A"), s NameError: name 'push' is not defined >>>
  • 関数オブジェクト Stack が用意されています。
  • 関数呼び出し Stack() のリターン値として、インスタンスオブジェクト s が得られます。
  • インスタンス属性 s.items を参照すると、空のリスト [] が得られます。
  • 関数 push は未定義なので、例外 NameError を生成します。

事例:コードの解説

    def Stack():
        class Tips(object): pass    #1:
        self = Tips(); del Tips
        self.items = []             #2:
        return self
■ #1: 局所クラス
        class Tips(object): pass    #1:
        self = Tips(); del Tips
局所クラス Tips は、インスタンスオブジェクトを得るための便宜的なものです。
  • そのため、クラス Tips の本体は、空 pass になっています。
  • Tips は、object を拡張しただけで、何も変化はありません。
  • ただし、組み込み型と違って、新たなインスタンス属性を付加できます。
  • インスタンス self を生成した後で、不要になったクラスオブジェクト Tips を削除します。
《Note》何もしないことに意義がある:構文規則に従うと、そこに文を記述する必要があっても、そこで何も実行したくないときには、空文として pass を利用します。
■ #2: インスタンス属性
        self.items = []             #2:
インスタンス属性 .items は、スタックに積む要素を保持するための便宜的なものです。
  • インスタンス属性 .items には、初期値として空のリスト [] を設定します。
》こちらに移動中です《TOP

関連記事

Last updated♪2009/10/24