TIL 32. python OOPベース


Pythonのオブジェクト向けプログラミング(OOP)ベースの学習を記録します.この文章はBook JumptoPythonをベースに書かれています.
オブジェクト
クラスとオブジェクト
Pythonではクラス生成のオブジェクトをオブジェクトと呼ぶ.ディクシャナリーと客体は全く違います.
各オブジェクトには独自のプロパティがあります.
同じクラスで作成されたオブジェクト同士の間には影響はありません.
計算機クラスとそのインスタンスを使用して作成されたオブジェクト.
class Calculator():
    def reset_data(self, first, second):
        self.first = first
        self.second = second
    
    def plus(self):
        result = self.first + self.second
        print(result)
        return result
    
    def minus(self):
        result = self.first - self.second
        print(result)
        return result
    
    def multiply(self):
        result = self.first * self.second
        print(result)
        return result
    
    def divide(self):
        result = self.first / self.second
        print(result)
        return result

my_cal = Calculator()
my_cal.reset_data(300,400)

my_cal.plus() # 700
my_cal.minus() # -100
my_cal.multiply() # 120000
my_cal.divide() # 0.75

his_cal = Calculator()
# his_cal.reset_data(100,200)
print(his_cal.first)
print(his_cal.second)
objectとinstanceの違いは?
objectは「クラスとして作成されたもの」を表し、instanceはクラスとどのような関係があるかを説明するために使用されます.
たとえばsamsung phoneはPhoneというクラスの例です.
方法
クラスで実装される関数もメソッドと呼ばれます.
メソッドはクラスで宣言されるだけで、関数とほぼ同じです.
メソッドの最初のパラメータselfPythonはすべての方法を1つのパラメータと一緒に使用します.
パラメータselfは特殊な意味を持つ.
最初のパラメータselfは、呼び出しメソッドのオブジェクトを自動的に渡します.したがって,あるメソッドが3つのパラメータを受け入れると,実際に加わったパラメータ値は2つである.
さぶんほう__str__のような方法は,単独で定義しなくてもclassに含まれる.
このように、クラスにはデフォルトのメソッドがあり、別途定義する必要がなく呼び出すことができます.
オブジェクト変数
オブジェクト変数とは、オブジェクト内で生成されるオブジェクトのみの変数です.クラスとして作成されたオブジェクトのオブジェクト変数は、他のオブジェクトのオブジェクト変数とは独立した値を保持します.オブジェクト間のプライマリ・セカンダリ値が異なるため、オブジェクトのオブジェクト変数を変更しても他のオブジェクトは関係ありません.
print(id(first_obj)) # 139653066210080
print(id(second_obj)) # 139653066427552
コンストラクタ
オブジェクトの初期値を設定する必要がある場合、インプリメンテーションジェネレータは、個別に呼び出す方法よりも安全です.ジェネレータとは、オブジェクトの作成時に自動的に呼び出されるメソッドです.
方法の名義で__init__を使用すると、この方法はジェネレータとなる.
    def __init__(self, first, second):
        self.first = first
        self.second = second
継承
継承とは、クラスを作成するときに他のクラスを継承する機能です.継承は、主にクラス機能を拡張する必要がある場合に既存のクラスを保持するために使用されます.
既存のクラスがライブラリとして提供されているか、変更が許可されていない場合は、継承が頻繁に使用されます.
メソッドオーバーロード
メソッドオーバーライドは、親クラスのメソッドの名前を同じ名前に変更することを意味します.
super
あるクラスが別のクラスに継承されると、ソースクラスになるクラスをスーパークラスまたは親クラスと呼びます.
メソッドでsuper関数が呼び出されると、親のメソッドは、サブクラスのメソッドで呼び出されます.主に、コードを繰り返さずに親メソッドのオーバーライドを実現するために使用されます.
クラス変数
クラス変数は、同じクラスで作成されたすべてのオブジェクトが共有する変数です.すべてのサブオブジェクトに親クラスのクラス変数がある場合は、サブオブジェクト上で個別に上書きされない限り、