TIL 32. python OOPベース
Pythonのオブジェクト向けプログラミング(OOP)ベースの学習を記録します.この文章はBook JumptoPythonをベースに書かれています.
オブジェクト
クラスとオブジェクト
Pythonではクラス生成のオブジェクトをオブジェクトと呼ぶ.ディクシャナリーと客体は全く違います.
各オブジェクトには独自のプロパティがあります.
同じクラスで作成されたオブジェクト同士の間には影響はありません.
計算機クラスとそのインスタンスを使用して作成されたオブジェクト.
objectは「クラスとして作成されたもの」を表し、instanceはクラスとどのような関係があるかを説明するために使用されます.
たとえばsamsung phoneはPhoneというクラスの例です.
方法
クラスで実装される関数もメソッドと呼ばれます.
メソッドはクラスで宣言されるだけで、関数とほぼ同じです.
メソッドの最初のパラメータ
パラメータselfは特殊な意味を持つ.
最初のパラメータselfは、呼び出しメソッドのオブジェクトを自動的に渡します.したがって,あるメソッドが3つのパラメータを受け入れると,実際に加わったパラメータ値は2つである.
さぶんほう
このように、クラスにはデフォルトのメソッドがあり、別途定義する必要がなく呼び出すことができます.
オブジェクト変数
オブジェクト変数とは、オブジェクト内で生成されるオブジェクトのみの変数です.クラスとして作成されたオブジェクトのオブジェクト変数は、他のオブジェクトのオブジェクト変数とは独立した値を保持します.オブジェクト間のプライマリ・セカンダリ値が異なるため、オブジェクトのオブジェクト変数を変更しても他のオブジェクトは関係ありません.
オブジェクトの初期値を設定する必要がある場合、インプリメンテーションジェネレータは、個別に呼び出す方法よりも安全です.ジェネレータとは、オブジェクトの作成時に自動的に呼び出されるメソッドです.
方法の名義で
継承とは、クラスを作成するときに他のクラスを継承する機能です.継承は、主にクラス機能を拡張する必要がある場合に既存のクラスを保持するために使用されます.
既存のクラスがライブラリとして提供されているか、変更が許可されていない場合は、継承が頻繁に使用されます.
メソッドオーバーロード
メソッドオーバーライドは、親クラスのメソッドの名前を同じ名前に変更することを意味します.
super
あるクラスが別のクラスに継承されると、ソースクラスになるクラスをスーパークラスまたは親クラスと呼びます.
メソッドで
クラス変数
クラス変数は、同じクラスで作成されたすべてのオブジェクトが共有する変数です.すべてのサブオブジェクトに親クラスのクラス変数がある場合は、サブオブジェクト上で個別に上書きされない限り、
オブジェクト
クラスとオブジェクト
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というクラスの例です.
方法
クラスで実装される関数もメソッドと呼ばれます.
メソッドはクラスで宣言されるだけで、関数とほぼ同じです.
メソッドの最初のパラメータ
self
Pythonはすべての方法を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
関数が呼び出されると、親のメソッドは、サブクラスのメソッドで呼び出されます.主に、コードを繰り返さずに親メソッドのオーバーライドを実現するために使用されます.クラス変数
クラス変数は、同じクラスで作成されたすべてのオブジェクトが共有する変数です.すべてのサブオブジェクトに親クラスのクラス変数がある場合は、サブオブジェクト上で個別に上書きされない限り、
Reference
この問題について(TIL 32. python OOPベース), 我々は、より多くの情報をここで見つけました https://velog.io/@wonseok2877/TIL-32.-python-OOP-기초テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol