🗐 電装工芸日記 - 舞台照明機器の製作とか -

能登半島地震で被災された方々にお見舞い申し上げます。

or 管理画面へ

タグ「Python」を含む投稿[119件](10ページ目)

Icon of admin
 オレメモ

np.abs( np_array_dt - ( datetime.datetime.now() - datetime.timedelta(seconds=0.1) ) ).argmin()

#Python
Icon of admin
 本業の合間にPython書き書き。
 すでに動作確認は出来ていますから書式を変える作業。
 オブジェクト指向で書くと処理が部品化されるので見通しが良くて間違いが少ないかも。
 明日明後日は本業の現場なので工作はお休みです。

#Python
Icon of admin
 super()の使い方がピンと来なかったのは、Python2とPython3で記述の仕方が少し違った為でした。ネットにはこの辺りが区別されてない情報が多いようです。
 super()は継承で呼び出すclass(親class)の初期化を実行するものです。親classに def __init__(self): があれば必須です。無ければ不要?。渡す引数があればsuper().__init__(引数)とします。引数の考え方書き方は普通にインスタンスを作る場合と同じです。ここにselfは不要ってこと。
 継承の考え方はC言語のincludeと似たようなものです。別classであってもここに書いてあるのと同じ扱いが出来ます。違いは、変数や関数に同じ名称がある場合にエラーにならず、親classを呼び出している子classの記述が優先されます。

 ということらしい。
 結局は「同じ様なこと何度も書きたかねー」「ここをちょっと変更して使えたらなー」に応えた手段らしい。
 すっごい崇高な指向ではなく、ベッタベタに楽したい指向だわな。
 Pythonをデザインした人は「楽するために努力するタイプ」らしい。親近感がわきます。

#Python
Icon of admin
 Pythonはオブジェクト指向な書き方が出来ると驚くほど書きやすいですね。人気No.1言語なのが納得です。
 継承におけるsuper()の使い方が感覚に入ってきていませんが、今日書いたテキスト画面の基本制御classを継承して定型画面を表示するclassを書いて習得しましょう。

 出来るだけ細かくclassで書いておけばC++への移植で都合が良いかもしれません。C++はゴリゴリのオブジェクト指向言語ですから、方言的な違いをclass単位でホローすれば全体の構造はそのまま行けるだろうという皮算用です。もしくは、全部をC++化しなくても、重い処理や繰り返しが多い処理だけPythonにimport出来るクラス・ライブラリとしてC++で書き直せば良いかもしれません。

#Python
Icon of admin
 オレメモ

 Pythonで文字列からANSIエスケープシーケンスを取り除く方法

 ソース
 import re
 text_ansi = '\033[2KTest\033[2;3HText'
 pattern = re.compile( r'\\033\[[0-9;]{1,}[a-zA-Z]{1}' )
 text_noansi = pattern.sub( '', text_ansi )
 print( text_noansi )

 実行結果
 TestText

 参考にしていた書き込みが間違っていました。
 制御文字(\や[)に対するエスケープ[\]がありませんでした。
 解決に時間がかかったのは自分の無知が故です。up主に文句を言ったらいけません。
 文字数を{}で指定しなくてもいいのですが、自分としてはこの方がメンテナンス性がいいかなと。

 あ、ここに書く時もそうなのですが、[\]を表示させるには注意があります。
 [\]を表示させるには[\\]としないといけない場合があります。
 「\\033」や「\[」と表示するには「\\\033」や「\\[」と打たねばならん事があるということです。システムによって若干違うようですが。
 これが原因でup主の書き込みがおかしくなっていたのかな?

 それにしても奇妙な字面です・・・

#Python
Icon of admin
 出来るだけclass記述を用いてPythonを書いていますが、慣れるといいですね、コレ。
 そういうモノなので当たり前ですが、自分で書いたライブラリが通常のライブラリと同じ様に使えます。通常関数か、スレッドか、プロセスか、その辺りの書き分けもclass側に持たせること出来るのでメインソースがかなりシンプルになります。
 ただ、後で迷わないようにするために、ソースコード内のコメントに使い方を記述するなど、運用のコツを掴まないといけません。
 書いた本人が後日も使えるようにしておくのが一番難しかったりして・・・

#Python
Icon of admin
 ネットを何気に見ていてPythonの「継承」が具体的にわかってきました。
 「継承」はclassを使って新たなclassを作る方法です。classの中で別なclassからオブジェクトを作って使っても同様の結果を出せますが、「継承」は別なclassのインスタンスをインスタンスのまま呼んで使います。C言語をご存じの方なら、classの中で別なclassのインスタンスをincludeするイメージでよいと思います。ちょっと説明が難しいところですね。
 Pythonといいますか、オブジェクト指向言語独特の考え方のようです。実体であるオブジェクト、オブジェクトを作るレシピのインスタンス、インスタンスを呼び出せるようにまとめたクラスとなるようです。俺様関数を楽に作る方法ですから、これなら一度書いたことを多目的に利用できますで、同じことを何度も書かずに済ますことが出来ます。

 ここで重要になるのがsuper()です。ただ、これがあって初めて継承が可能になるのに、これについての説明が書籍でもネットでも弱い気がします。
 また、最もシンプルな基礎用法を題材に説明するのではなく、最もシンプルな応用例を題材に説明する文書が多いので、機能の核心を理解するのを遠ざけている傾向を感じます。

#Python
Icon of admin
 1ファイルでPythonを書いているとソースが上下にあっちこっちして解りにくくなります。
 以前は面倒な気すらしていましたが、関数をクラスライブラリにして別ファイルにする意味がようやく実感出来ました。
 クラスライブラリにするってことは汎用化でもありますが、汎用化が目的ではなく、ダラダラ専用処理を書かないための制約と思えばいいでしょう。
 今後の拡張の為にも、ここまで書いてきたソースをゼロから書き直してみます。

#Python
Icon of admin
 Art-Netの受信モニタはイメージ通りに動きました。選択したユニバースをキレイに表示しています。
 当面の習作課題はクリアしましたが、喜ぶというより目の前に新たな壁が見えてきました。

 この後はartnet-coreと名付けている受信と加工を司るサーバー的な部分を作ります。
 ここまでの経験をもとに全体の構造をよく考えてから作る必要があります。

#Python #[Art-Net]
Icon of admin
 今日も大半が待機時間な小屋付き増員です。

 Art-Netを送信する物が無いので画面とキー操作の作り込みをしました。
 簡単なようで難しいのがキー入力です。
 どんな文字でも受け付けるinput()などの文字列入力コマンドを使えば入力自体は簡単ですが、カーソルキーなどを即応させたいし、ホットキーでコマンドを入力したいし、入力の際にエラーにならない様にフィルタをかけたい。
 面倒だったのは数値の入力。用いられる数値には範囲がありますから、範囲外の入力がされたならその時点でアラートを出したい。
 例えば、数値範囲が0-127だとして、128や1000などの範囲外の数値が入力されたならその時点でアラートを出す。求める数値が整数なら小数点以下の入力は阻止する。数値を得たいのだから数字キー以外の入力は受け付けない。など。
 求める操作のリズム感によりますが、数値範囲や小数点の条件などでフィルタする関数を作っておいても無駄にはならないでしょう。
 当面の目標であるArt-Netのモニタは整数だけを受け付ければいいのですが、極端な話「.」ピリオドを受け付けなければこれは簡単。小数点以下1桁の範囲指定が一番面倒でした。

 これらの処理には「正規表現」と呼ばれる奇怪な文字列を使わなければなりません。「3桁以下の整数文字列='^[1-9][0-9]{,2}$'」とか「小数点以下1桁の2桁以下の実数文字列='^[0-9]{,2}\.{,1}[0-9]{,1}$'」といった書き方をします。なんですかねコレ。
 慣れてしまえば、まぁ、ありかなと。ANSIエスケープシーケンス並みに古いVT100時代からの名残りです。

#Python

■当面の課題

桜のライトアップの季節です。花粉症の季節でもあります。
自分は平気ですが、花粉症の部下は死にそうな顔をしています。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2022年2月
12345
6789101112
13141516171819
20212223242526
2728

■カテゴリ:

■最近の投稿:

最終更新日時:
2024年5月4日(土) 05時49分51秒