最新のWeb情報ならアールイズム

リンク依頼 サイトマップ 最初に

クラス・モジュール・パッケージ

モジュールとはクラス・関数・変数などをひとつのまとまりにして部品として扱うものをいいます。
クラスとは関数・変数などをひとつのまとまりにしたものです。
クラス内に記述する関数をメソッドと呼び、クラス内のものをデータやメソッドで呼び出して実体化したもののことをインスタンスといいます。
ひとつのクラスで複数のインスタンスを生成することができ、インタンス毎に別のデータがもてます。
クラスはインスタンスごとに別々のデータが作成でき、メソッドを通さないとデータにアクセスすることはできません。

モジュールを作成するには「〇〇.py」ファイル(スクリプトファイル)を作成してimport文で読み出します。
読み込んだモジュールのクラス・関数・変数などは、「モジュール名.識別子」で参照できます。

では実際に以下の手順でモジュールを作成して実行してみてください。

(1) mo1.pyのファイル名でファイルを作成します。
(2) mo1.pyの中身に以下を記載してください。

def abc(a,b,c):
d=a+b-c
return d

(3) main1.pyのファイル名でファイルを作成します。

import mo1

printout=mo1.abc(4,5,3)
print(printout)

(4) python main1.pyで実行します。
Windows OSでしたら、C:\直下にフォルダ(test)を生成して以下をコマンドプロンプトで実行すれば実行できます。

python C:\test\main1.py

結果6が表示されたと思います。

importでモジュール(ファイル名)を記述して、モジュール名.関数()で実行するような流れです。

また、コメントを使うことでこの関数が何か説明しておくことも可能です。
コメントとはスクリプトファイル実行時にスキップさせる行です。
#(シャープ)から初めた行はプログラム上で読み込みません。

次に以下の手順でクラスを作成して実行してみてください。

(1) class1.pyのファイル名でファイルを作成します。
(2) class1.pyの中身に以下を記載してください。

class TestClass:
def printtest(self):
self.name = ""
print(abc)

test = TestClass()


test.name='Hello World'
abc = test.name

test.printtest()

クラス名は大文字で始めるルールがありますので、大文字にします。
test = TestClass()でクラスのインスタンスを生成します。
self.name = ""はインスタンス変数になります。
test.name='Hello World'でインスタンス変数を追加しております。
test.printtest()でメソッドを実行します。

また、
__new__と__init__はクラスのインスタンスが生成時に呼ばれ、自動的に実行されるメソッドをコンストラクタといいます。
違いは、__new__はインスタンスが生成時に必ず呼ばれますが、__init__は呼ばれない場合もあります。
__del__はインスタンスが消滅した時に呼ばれ、デストラクタといいます。

継承

パッケージとはモジュールを呼び出すときに複数のスクリプトファイルを同時に呼び出したいときに利用します。

__init__.pyのファイル名で初期化ファイル(中身は空)を作成し、フォルダ(ディレクトリ)に移動します。
ではC:\testに新たにフォルダ(ディレクトリ)packを作成し、__init__.pyを移動します。
C:\test\pack\__init__.pyとなります。
C:\test\packフォルダ内ににpack1.pyとpack2.pyを以下を記述して生成します。

----pack1.py--------------
def abc(a,b,c):
d=a+b+c
return d

----pack2.py--------------
def abc(a,b,c):
d=a*b*c
return d

C:\testにpacktest.pyを生成して、以下を記述します。

import sys

sys.path.append('C:\test\pack')

import pack.pack1
import pack.pack2

print(pack.pack1.abc(2,3,4))
print(pack.pack2.abc(2,3,4))


C:\test>python packtest.py
9
24

便利なライブラリ(モジュール)を利用してみます。
ここではmathとrandamモジュールを利用します。

では実際に以下のコマンドを入力して実行してみてください。

>>> import math
>>> math.fabs(10)
10.0
>>> math.pi
3.141592653589793
>>> math.e
2.718281828459045

>>> import random
>>> print(random.random())
0.6341483858329793
>>> print(random.randint(1,10))
9

その他に行く

while文に戻る