【Python】classを使う
こんにちは。アマチュアPythonユーザーの伊田です。
Pythonのclassの使い方を調べてみました。
• 経緯
プライベートな関数を作りたい
趣味で、Pythonの簡単なコードを書くことがあります。関数の数は数個、行数は数十行ほどの簡単なスクリプトです。
現在僕は、少し長めのコードを書いています。コードが長くなってきたので、一つのファイルだけでは読みにくくなってきました。そこで、複数のファイルを用意し、関数はそれらのファイルに分散させることにしました。また、別のファイルから参照されない関数(つまり、ファイル内からしか参照されない関数)は、プライベートにすることにしました。しかし、プライベートにする方法が分かりません。
Pythonにおいて、プライベートな関数はどのように作るのでしょうか。
classを使う
インターネットで検索してみたところ、classという仕組みを利用することで プライベートな関数 を作れそうということがわかりました。
• サンプル
classを使ったサンプルコードを以下に記します。
[main.py]productA = 200
productB = 100
total = productA + productB #合計金額 : 300(円)
taxIncluded = consumption_tax.calc(total) #税込み価格を計算する。
print(taxIncluded) #330.0
calcurated = privateMethods.multiplyTaxRate(price)
return calcurated
#このファイルのプライベートな関数をまとめたクラス
class privateMethods:
#税抜き価格を税込み価格に変換する関数(メソッド)
def multiplyTaxRate(price):
 taxRate = 0.1 #税率10%とする。
 multipliedPrice = (price * (1 + taxRate))
 return multipliedPrice
productA
とproductB
の合計金額に消費税(10%)をかけ、価格を表示するスクリプトです。#main.pyを実行すると、”330.0” と表示されます。multiplyTaxRate
()は税込み価格を計算する関数(メソッド)であり、これが今回プライベートにしたい関数です。この関数は、 #consumption_tax.pyの中の、さらに privateMethods
クラスの中に定義しています。こうすれば、main.pyからmultiplyTaxRate
()を直接呼び出すことはできません。つまり、multiplyTaxRate
()はプライベートな関数といえると思います。main.py では、multiplyTaxRate
()を直接呼び出す代わりに、calc
()を呼び出すことで、間接的にmultiplyTaxRate
()を利用しています。
関数をclassの中に定義すると、別ファイルに対するプライベートな関数のように利用できます。
• 感想
classを利用して、プライベート関数もどきを作りました。
classの利用方法などについて理解が足りていないので、勉強が必要だと思いました。