Python クラスを使ってアロマオイルの値段を計算する

この記事を読むことで、

・クラスを使った計算の例に、ハッカ油とレモン精油のアロマオイルの値段の計算

・コンストラクタの書き方

・消費税の計算でint関数で小数を切り捨て値段の整数を求める

・インスタンス化

についての概要が掴めます。

具体例として、クラスを使って、アロマオイルの単価×数量×税率から合計金額を計算します。

クラスは「設計図」というイメージで説明されることが多いです。

クラス=設計図

インスタンス=クラスという設計図から作られた「具体的な」製品

と説明をすると、なんだか小難しい感じがするので、

クラス… 【アロマオイルの種類】、【アロマオイルの数量】

インスタンス… そのフォーマットから作った、


【ハッカ油】の【数量】、
【レモンオイル】の【数量】

と言った「具体的な」アロマオイルについて

と捉えると少し分かりやすくなるかもしれないです。

「Aroma」というクラス(設計図)に「money」というメソッド(クラス内で使う関数)を持たせて、アロマという抽象的なものから、「ハッカ油」、「レモン精油」という具体的なもの(インスタンス)を作って計算結果を求めています。

おすすめのハッカ油とレモン精油を購入するイメージでコードを書きました。

ハッカは1本1100円、レモンは1200円で計算しました。
購入数はハッカ油5本、レモン精油4本とします。
消費税は10%で計算します。


では、ここからコードを書いていきます。
まず、クラスは下記のコードで作成します。

class Aroma:

「Aroma」というクラスを作りました。注意点として、クラスの先頭は大文字にします!

クラス内で、消費税率taxを宣言して10%にしました。
税抜価格に1.1をかける計算になります。

tax=1.1

このクラスの中には、先ほど紹介した「money」というアロマの値段を計算するメソッドがあるのですが、「Aroma」というクラス(設計図)を初期化して、「ハッカ油」の値段を計算 → 「ハッカ油」の値段と数量が入っている変数を初期化→「レモン精油」の値段を計算しています。

初期化する為に、「コンストラクタ」という特別なメソッドを使います。
このメソッドがあるので、「ハッカ」→ <初期化> → 「レモン精油」と計算出来ます。

そのため、メソッド「money」の前にコンストラクタを書いています。
コンストラクタはクラスの中で1番先に呼び出されます。

#これは「コンストラクタ」で最初に呼ばれて変数を初期化している
    def __init__(self,price,count):
        self.price=price
        self.count=count

コンストラクタは、「init」を使って書いています。
コンストラクタの書き方をまとめると、上記コードの2行目は、この様な書き方になります。

def (スペース)__(アンダーバー2つ)init__(アンダーバー2つ)

このコンストラクタの中には「self」というものが入っていますが、ここでは簡単に、「ハッカ油自体」、「レモン精油自体」だと思って下さい。

コンストラクタの後に、値段を計算するメソッドmoneyを書きます。
int関数で、小数点以下を切り捨てて整数の値段にしています。

#値段を計算するメソッド
    def money(self):
        return int(self.price*self.count*Aroma.tax)

ハッカ油やレモン精油をクラスを使って計算するのに、クラスという設計図を使って、「ハッカ油」、「レモン精油」の単価と数量を指定して計算します。

そのインスタンス化と出力のコードです。

#インスタンス化
hakka=Aroma(1100,5)
remon=Aroma(1200,4)

#値段を出力。「str」と「+」を使って計算結果と文字列を出力している。
print('【 ハッカ油】は合計【'+str(hakka.money())+'】円です。')
print('【レモン精油】は合計【'+str(remon.money())+'】円です。')

ここまでのコードのまとめと、出力結果です。

class Aroma:

    #消費税
    tax=1.1

    #これは「コンストラクタ」で最初に呼ばれて変数を初期化している
    def __init__(self,price,count):
        self.price=price
        self.count=count

    #値段を計算するメソッド
    def money(self):
        return int(self.price*self.count*Aroma.tax)

#インスタンス化
hakka=Aroma(1100,5)
remon=Aroma(1200,4)

#出力
print('【ハッカ油  】は合計【'+str(hakka.money())+'】円です。')
print('【レモン精油】は合計【'+str(remon.money())+'】円です。')

オススメのアロマです。

ハッカ油
レモン精油

お疲れ様でした。ブレイクタイムPhotoは、

富士山と江ノ島です。

ご精読ありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介