クラス |
クラスって何?
クラスとは何たるかわからずに、コードを書いている人も多いように思います。Visual C++のMFCを使えばクラスがより分かりやすいと思います。しかし、Pythonのクラスより複雑なので挫折する人が多いようです。例えばボタンというクラスを作ります。それをアプリで使うにはボタンの位置、名前などをセットするだけで複数のボタンを作成できます。データと機能を実装したワンチップマイコンみたいなイメージです。 次にクラスは継承できることです。A製品向けのクラスをB製品に継承して作れば最初から作る無駄が省けます。 クラスを活用するには、 無駄のないデータの定義 分かりやすいコーディング が重要です。 クラスの実装 最少のソース
何もしません。クラスの定義で、class myClass(object)と記述しているページがあります。両方とも同じようです。
継承するときは()が必要になるので、それ以外は()なしのほうがすっきりしていると思います。
コンストラクタ・デストラクタ コンストラクタはデータの初期化をします。 デストラクタはクラスの終了時に呼び出され後処理をします。 例えばシリアルポートをクローズするなどを実行します。
これをベースにした簡単なサンプルです。
結果:
selfって何だ? 「クラスで定義した」という意味合いです。
結果は:
関数hogeのselfがないとエラーになります。クラス内で呼び出すことも、インスタンスから呼び出すこともでいません。
データは関数内であればselfを付けなくてもエラーになりません。しかし、別の関数が参照することはできません。その関数内で消滅してしまうからです。関数はすべてselfをつける必要があります。データは広域につかうならselfをつけます。 クラスの継承 manクラスを継承してpoepleというクラスを作ります。追加する項目は性別とします。
結果:
クラスの定義:class people(man): クラスmanから継承する記述です。 コンストラクタ def __init__(self,name, age, sex): 新しい引数sexが追加になりました。 super().__init__(name, age) クラスmanでnameとapgeは扱っていたのでクラスmanに渡します。 super().とは元のクラスに丸投げということです。 self.sex = sex 追加になった項目をセットします。 自前の関数のオーバーライト def info(self): super().info() クラスmanにnameとageの表示は丸投げ。 print(' ', self.sex) 新規追加のsexを表示する。 peapleでは見えなくなったhoge()はちゃんと継承されています。 |