トップ «前の日記(2025年05月09日) 最新 編集

xiphioの備忘録


2025年05月28日

_ [computer] pythonの dataclass

先の、納品書発行の手順を変更する試み、結局元のデータ入力のCのプログラムから書き換えることにしました。InformixのCのプログラムを書き換えてCSVでデータを出力し、それをpythonでExcelのファイルとしてみました。

すでにあまりにも古典的なCSVでなく、一応 jsonや yamlも考えたのですが、「この程度のデータ受け渡しはCSVで充分」と言う結論です。それに、CSVならExcelから開く事も可能です。ちょっと探してみましたが、jsonやyamlを直接Excelからは開くのは、どうも無理のようです。

pythonのプログラムを書き換えていて、少し気になったのが、Excelの表に書き込む場合の位置の設定です。出力の書式を作ったら、各々その行番号と列番号が決まるのですが、全部別々に定数で設定するのは何だかスマートではないなぁ、と言う気がしてきました。例えば

COL_A = 11

ROW_A = 22

・・・・

とかです。昔はやっていましたが。

では、かといって

POS_A = [11,22]

みたいに、リストにするのも何だか変だし、

「最近のプログラム言語なら、こんな事でもいちいち新しいクラスを定義してからそれを使うんだろうなぁ、普通皆さんはどうしているのかなぁ、」と思い、少し検索してみましたが、これと言った事例はすぐには見つかりませんでした、

こういった場合には、ChatGPT(サブスクで毎月利用料を払っているのに関わらず、殆ど使っていない)で教えてもらうのが一番と思いつき、久しぶりにログインして、チャットで訪ねてみたところ、見事に回答してくれました。

お勧めは、名前付きタプルを使うか、dataclassを使うかでした。どちらも全く知りませんでした。

教えてもらってから、改めてどんな物か自分で調べてみたところ、dataclassを使う事にしました。

from dataclasses import dataclass

@dataclass

class CellPos:

row: int # 行番号

col: int # 列番号

こんな感じで、割と簡便に定義できるので、便利ですね。