#クラスって概念難しくないすかね・・・?
クラスってなんぞや。インスタンス?メソッド?関数の宣言だよねそれ。て感じで多分1,2年前この分野で挫折してちょっとプログラミングの勉強から遠ざかっていた気がする。今回、pythonをもう一度学び直しのために勉強してようやくまたクラスの分野に戻ってきたところです。
##とりあえず触ってみる
概念とかインスタンスとかオブジェクト指向とかちょっと置いといて、どんなイメージなのか触りながらの手探りで学習スタート。ほかの方のクラスに関する記事を読んでみてイメージしたのは、会社で回ってくる稟議書とかに対して何かしらの処理をするとき便利そうじゃない??ってイメージです。ひとまず理論とかオブジェクト指向とは何なのかというお勉強チックなことは次回に回してここでは自分のイメージしたクラスってこういうときに使ったら便利なんじゃね?というイメージを持って作ったコードを公開してみます。
##稟議書に対する処理
当方、文系でとある会社の経理部員です。毎日書類や勘定科目と戦っています。このような身分でクラスが利用できないかと思いついたのが稟議起こして購入する予定の資産に対する処理です。
すなわち、稟議ナンバー、稟議起案者、起案者所属部署、何の資産か、いくらの資産かという属性を持たせて
メール確認の処理、そしてエクセルへの転記で決算時の帳票として利用できるようにしておくことです。
稟議書は毎日ひっきりなしに回ってくるのでプログラム化して効率化するのがよさそう。
この着想をもとにpythonのクラスが使えるのではないかと以下のコードを作成した次第。
とりあえずプログラムにやってほしいこと
①メール文の作成
②エクセルへの転記
##そして作ったのが以下のクラスを交えたコーディング
import openpyxl
import datetime
class assets():
def __init__(self,apdnum,apdmen,unitname,assetname,money):
self.apdnum=apdnum
self.apdmen=apdmen
self.unitname=unitname
self.assetname=assetname
self.money=money
#メールにPDFを添付する機能 担当者と担当部署から送り先メールアドレスを拾ってくる作業を追加予定
def when_mail(self):
mail=("{}{}様お疲れ様です。経理部の固定資産担当です。稟議書No{}の{}についてですが、\
\n当月の状況について利用開始しているか教えてください。また請求書もあれば請求書の添付も\
\nよろしくお願いいたします。".format(self.unitname,self.apdmen,self.apdnum,self.assetname))
print(mail)
def Insert_excel(self):
wb=openpyxl.load_workbook("../data/発注固定資産管理表.xlsx")
sh=wb.active
for dt_row in range(2,50):
if sh["A"+str(dt_row)].value!=None:
continue
else:
sh["A"+str(dt_row)].value=self.apdnum
sh["B"+str(dt_row)].value=self.unitname
sh["C"+str(dt_row)].value=self.apdmen
sh["D"+str(dt_row)].value=self.assetname
sh["E"+str(dt_row)].value=self.money
break
wb.save("../data/発注固定資産管理表_{}_johannesrome作成.xlsx".format(datetime.date.today()))
#以下実行プログラム
print("新しい稟議書Noを入力してください")
apdnum_re=input()
print("稟議書の起票者を入力してください")
apdmen_re=input()
print("起票者の所属部署を入力してください")
unitname_re=input()
print("購入対象の名前を入力してください")
assetname_re=input()
print("予定調達価格を入力してください")
money_re=input()
m=assets(apdnum_re,apdmen_re,unitname_re,assetname_re,money_re)
m.when_mail()
m.Insert_excel()
##コードの詳細
コードとしては、assetクラスを作り、そこに5つの属性を持たせる。
①稟議ナンバー
②稟議起案者
②起案者所属部署
④購入予定資産の名称
⑤購入金額
プログラムを起動すると上記の5つのインプットを求められ、それに基づきインスタンスが作成。
そしてメール文の作成とエクセルへの転記が行われるという内容。
#個人的な総括
個人的にはこれでクラスのメリットを享受したプログラムになっているのではないかと思うのだけれど。
どのようなものだろうか。クラスの承継や多重承継なんかは使ってないけれど、クラスのメリット
使いきれてないよ~て意見があればぜひぜひコメントください( ^ω^)。以上、第一回目でした!