クラス
クラスって何?
クラスとは何たるかわからずに、コードを書いている人も多いように思います。Visual C++のMFCを使えばクラスがより分かりやすいと思います。しかし、Pythonのクラスより複雑なので挫折する人が多いようです。例えばボタンというクラスを作ります。それをアプリで使うにはボタンの位置、名前などをセットするだけで複数のボタンを作成できます。データと機能を実装したワンチップマイコンみたいなイメージです。
次にクラスは継承できることです。A製品向けのクラスをB製品に継承して作れば最初から作る無駄が省けます。
クラスを活用するには、
無駄のないデータの定義
分かりやすいコーディング
が重要です。

クラスの実装
最少のソース

class myClass:
    pass

myclas = myClass()
何もしません。クラスの定義で、class myClass(object)と記述しているページがあります。両方とも同じようです。 継承するときは()が必要になるので、それ以外は()なしのほうがすっきりしていると思います。

コンストラクタ・デストラクタ
コンストラクタはデータの初期化をします。
デストラクタはクラスの終了時に呼び出され後処理をします。 例えばシリアルポートをクローズするなどを実行します。

class myClass:
    # コンストラクタ
    def __init__(self):
        pass

    # デストラクタ
    def __del__(self):
        pass

myclas = myClass()
これをベースにした簡単なサンプルです。

class man:
    # コンストラクタ
    def __init__(self,name, age):
        self.name = name
        self.age = age
        

    # デストラクタ
    def __del__(self):
        pass
    #自前の関数
    def info(self):
        print(self.name, ' ', self.age)

man1 = man('山田', 25)
man2 = man('綾瀬', 32)
man1.info()
man2.info()
結果:

山田   25
綾瀬   32

selfって何だ?
「クラスで定義した」という意味合いです。

class man:
    # コンストラクタ
    def __init__(self,name, age):
        self.name = name
        self.age = age
        
        

    # デストラクタ
    def __del__(self):
        pass

    def hoge(self):
        print('abcd')


    #自前の関数
    def info(self):
        self.hoge()
        print(self.name, ' ', self.age)



man1 = man('山田', 25)
man2 = man('綾瀬', 32)

man1.info()
man2.info()
#man2.hoge()
結果は:

abcd
山田   25
abcd
綾瀬   32
関数hogeのselfがないとエラーになります。クラス内で呼び出すことも、インスタンスから呼び出すこともでいません。
データは関数内であればselfを付けなくてもエラーになりません。しかし、別の関数が参照することはできません。その関数内で消滅してしまうからです。関数はすべてselfをつける必要があります。データは広域につかうならselfをつけます。

クラスの継承
manクラスを継承してpoepleというクラスを作ります。追加する項目は性別とします。

	class man:
    # コンストラクタ
    def __init__(self,name, age):
        self.name = name
        self.age = age
        
        

    # デストラクタ
    def __del__(self):
        pass

    def hoge(self):
        print('abcd')


    #自前の関数
    def info(self):
        self.hoge()
        print(self.name, ' ', self.age)

class people(man):
    def __init__(self,name, age, sex):
        super().__init__(name, age)
        self.sex = sex

    #自前の関数
    def info(self):
        super().info()
        print(' ', self.sex)
 
people1 = people('山田', 25,'男')
people2 = people('綾瀬', 32,'女')

people1.info()
people2.info()
people2.hoge()
結果:

abcd
山田   25
  男
abcd
綾瀬   32
  女
abcd
クラスの定義:
 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()はちゃんと継承されています。