###クラスとオブジェクトが理解できなかったので書いてみました。
####クラスとは(いろいろな例えがあり、説明する方の親切度によって説明が異なっているようです)
-
オブジェクト・・・変数とそれに関連する関数をセットにしたもの⇒セットなのでプログラムしやすい
-
クラス ・・・オブジェクトの雛型の名前
- コンストラクタ・・ 雛型の初期値 ※initはアンダーバー2個ずつで囲み、引数にはselfをつける
- メソッド ・・・ クラスの中で定義する関数。この関数を使ってクラスを動作させる
-
インスタンス ・・・ クラス(雛型)らコンストラクタを呼び出して実際に稼働させる基
-
メンバ ・・・ クラス(雛型)の引数を参照する
####今回のプログラムに当てはめると
-
オブジェクト・・・ファイル名で降順にソートしたり、ファイルのサイズを測るもの関数と関連する変数のセット
-
クラス ・・・FileControl
- コンストラクタ・・ 引数としてファイルの参照先を格納するdir変数を宣言
- メソッド ・・・ ファイル名で降順にソートするmake_r_listと、ファイルサイズを取得するsize_checkを宣言
-
インスタンス ・・・ 引数にファイルの参照先をつけてFileControlを呼び出して、インスタンスpathを作成
-
メンバ ・・・ インスタンスpathに引数を格納するdirをつけて格納されている値を確認
#####つまりは
「FileControlクラスを呼びしてpathインスタンスを生成し、make_r_listメソッドでファイルを降順にソートして、そのファイルのサイズをsize_checkメソッドで計測した」ということになります。
import os
import pprint
#FiileControlクラスを定義
class FileControl:
#コンストラクタを定義
def __init__(self,dir):
self.dir=dir
#ファイル名で降順にソートするメソッド
def make_r_list(self):
dirs=[]
for n in os.listdir(self.dir):
# ↓ ファイルサイズの計測にフルパスが必要となるためフルパスを配列に追加
dirs.append(self.dir+n)
dirs.sort(reverse=True)
return dirs
#ファイルサイズを取得するメソッド
def size_check(self,fname):
s_var=os.path.getsize(fname)
s_var=s_var/(1024*100)
return s_var
#↑↑↑↑↑ここから上はすべて定義。
#↓↓↓↓↓ここから下が実際の稼働になります。
# FileControlを呼び出しpath(インスタンス)を作成
path=FileControl('c:/users/user/desktop/PDF/')
#メンバの確認
print(path.dir)
#ファイル名で降順にソートしてリストを返す、make_r_listを実行
list=path.make_r_list()
#list変数からファイルを一個ずつ読み込んでファイルサイズを取得するsize_checkメソッドを実行
for f in list:
#formatを使うと整数型を変換しなくても同時に表示できるため
pprint.pprint('ファイル名:{0}--ファイルサイズ_{1:.1f}KB'.format(f,path.size_check(f)))
実行結果。ファイル名とサイズ(KB換算)が表示されています。
自転車のフレーム(クラス)にタイヤ(メソッド)やペダル(メソッド)をつけてタイヤには空気(引数)、ペダルに推進力(引数)を与えるようなものでしょうか?最終的にどの言語も配列とクラスを覚えなければならないというようなことをどこかで見たので書いてみました。