1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonのクラスへの理解奮闘記(1)とりあえず動かしてみる

Last updated at Posted at 2020-02-25

#クラスって概念難しくないすかね・・・?
クラスってなんぞや。インスタンス?メソッド?関数の宣言だよねそれ。て感じで多分1,2年前この分野で挫折してちょっとプログラミングの勉強から遠ざかっていた気がする。今回、pythonをもう一度学び直しのために勉強してようやくまたクラスの分野に戻ってきたところです。

##とりあえず触ってみる
概念とかインスタンスとかオブジェクト指向とかちょっと置いといて、どんなイメージなのか触りながらの手探りで学習スタート。ほかの方のクラスに関する記事を読んでみてイメージしたのは、会社で回ってくる稟議書とかに対して何かしらの処理をするとき便利そうじゃない??ってイメージです。ひとまず理論とかオブジェクト指向とは何なのかというお勉強チックなことは次回に回してここでは自分のイメージしたクラスってこういうときに使ったら便利なんじゃね?というイメージを持って作ったコードを公開してみます。

##稟議書に対する処理
当方、文系でとある会社の経理部員です。毎日書類や勘定科目と戦っています。このような身分でクラスが利用できないかと思いついたのが稟議起こして購入する予定の資産に対する処理です。
すなわち、稟議ナンバー、稟議起案者、起案者所属部署、何の資産か、いくらの資産かという属性を持たせて
メール確認の処理、そしてエクセルへの転記で決算時の帳票として利用できるようにしておくことです。
稟議書は毎日ひっきりなしに回ってくるのでプログラム化して効率化するのがよさそう。
この着想をもとにpythonのクラスが使えるのではないかと以下のコードを作成した次第。

とりあえずプログラムにやってほしいこと
①メール文の作成
②エクセルへの転記

##そして作ったのが以下のクラスを交えたコーディング

qiita.rb
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つのインプットを求められ、それに基づきインスタンスが作成。
そしてメール文の作成とエクセルへの転記が行われるという内容。

#個人的な総括
個人的にはこれでクラスのメリットを享受したプログラムになっているのではないかと思うのだけれど。
どのようなものだろうか。クラスの承継や多重承継なんかは使ってないけれど、クラスのメリット
使いきれてないよ~て意見があればぜひぜひコメントください( ^ω^)。以上、第一回目でした!

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?