mieki256's diary



2019/06/06(木) [n年前の日記]

#1 [python] Pythonで関数テーブルっぽいアレを書きたい

Pythonのスクリプト上で、関数テーブルっぽいものを書きたい。どうすればいいのやら。

ググってみて試してみたり。こうかな。

def func1():
    print("I am func1")


def func2():
    print("I am func2")


def func3():
    print("I am func3")


tbl = {
    0x01: func1,
    0x02: func2,
    0x03: func3,
}

for i in range(5):
    if i in tbl:
        tbl[i]()
    else:
        print("  %d is None" % i)

実行結果。
> python 01_def_call_test.py
  0 is None
I am func1
I am func2
I am func3
  4 is None

呼び出す際に、後ろに「()」をつければ関数として呼び出せる、のかもしれない。たぶん。

クラスの中で記述したい。 :

クラスの中で、定数として記述できるのか試したけれど、上手くいかない。 *1

結局、以下のように、初期化時に代入する感じに。

class DefCallTest(object):

    def __init__(self):
        self.tbl = {
            0x01: self.func1,
            0x02: self.func2,
            0x03: self.func3,
        }

    def func1(self):
        print("I am func1")

    def func2(self):
        print("I am func2")

    def func3(self):
        print("I am func3")

    def main(self):
        for i in range(5):
            if i in self.tbl:
                self.tbl[i]()
            else:
                print("  %d is None" % i)


c = DefCallTest()
c.main()

実行結果。
> python 02_def_call_test_with_class.py
  0 is None
I am func1
I am func2
I am func3
  4 is None

こういう書き方をするしかないのかな…。他に手はないものか。

2019/06/07追記。 :

クラス内でこの手のアレの書き方に関して、英語圏でもやり取りしてる例を見かけた。

_referencing class methods in class lists in Python - Stack Overflow

うーん。どれも、なにかこう…。

*1: そもそも Python に定数は無い、定数に見えるような書き方をしてるだけ、ではあろうけど。

#2 [nitijyou] 歯医者に行ってきた

S歯科まで電動自転車で。11:20に予約。11:25-11:35まで治療。

針っぽいものを入れて何かの処置をしようとしたっぽいけど、こちらが思わず「ううーっ!」と呻いてしまうほどの痛みが。「太い神経だからまだ生きてるのでしょう」「薬を詰め替えておきます」との話。面倒臭い患者が来てしまった、とか思われてそう。

なんだか後で痛み出しそうな予感…。

自業自得ではあるけれど、本当に根管治療って必要なのだろうか。いや、もちろん必要な事例もあるだろうけど。今回のように、歯が痛み出してない状態のソレを削って抜いてしまう必要があるのかどうか、そのあたりが疑問で。抜いてしまったらその歯の自己修復は一切期待できないわけだし。とは言え、他に治療方法があるのかどうかも分からんし。まあ、江戸時代のように、抜く以外治療方法は無い、みたいな状態と比べたら、はるかにマシなのかもしれんけど。新方法が発明されて、かつ普及してくれたらなあ…。

まあ、自業自得なんだけど。

以上、1 日分です。

過去ログ表示

Prev - 2019/06 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project