Python.use(better) 組み込み関数 map

記事一覧

Python.use(better)
組み込み関数 map

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


》こちらに移動中です《
》こちらに移動中です《

事例:局所クラス

局所クラス内から、それを包括するクラスの属性を参照するには、いくつかの方法があります。

■ 組み込み関数 locals

組み込み関数 locals を利用すると、インスタンス属性を参照できます。

class ListDemo(JPanel, ListSelectionListener):

    def __init__(self):
        ...
        class FireListener(ActionListener):

            def __init__(self, local):
                self.outer = local

            def __call__(self, e):
                list = self.outer["self"].list     #1:
                index = list.selectedIndex
                ...

        self.list = JList(                         #2:
            listModel,
            selectionMode = ListSelectionModel.SINGLE_SELECTION,
            selectedIndex = 0,
            valueChanged = self,
            visibleRowCount = 5,
            )

        fireButton = JButton(
            self.fireString,
            actionCommand = self.fireString,
            actionPerformed = FireListener(locals()),     #3:
            )

事例:コードの解説

■ #1: 包括するクラスの属性を参照する
            def __call__(self, e):
                list = self.outer["self"].list              #1:
                index = list.selectedIndex
                ...
  • 内部クラス FireListener では、インスタンス属性 self.outer を介して、それを包括するクラスのインスタンス属性 self.list を参照できます。
■ #2: インスタンス属性
        self.list = JList(             #2:
            ...
■ #3: 組み込み関数 locals
            actionPerformed = FireListener(locals()),             #3:
  • 組み込み関数 locals を利用すると、局所スコープにおいて、参照可能な変数の一覧が得られます。その中には、インスタンス自身を参照する変数 self も含まれます。
  • ボタンを選択 actionPerformed すると、発生したイベントに呼応して、リスナー FireListener の特殊メソッド __call__ を起動します。

》こちらに移動中です《
TOP


関連記事

Last updated♪2009/10/14