python oops concepts python classes
PythonのOOPの概念:Pythonのクラスとオブジェクト、継承、オーバーロード、オーバーライド、データの非表示
前のチュートリアルでは、 入出力操作 Pythonが提供するもの。
これらの関数を使用して、ユーザーまたは外部ソースからデータを読み取る方法と、それらのデータを外部ソースに書き込む方法を知るようになりました。また、関数を使用して巨大なコードを小さなメソッドに分割する方法と、それらを呼び出したりアクセスしたりする方法も学びました。
さらに読む=> 無料のPythonトレーニングチュートリアルの明示的な範囲
優先キューの実装c ++
このチュートリアルでは、OOPと呼ばれる高度なPythonの概念と、Pythonで使用できるさまざまなタイプのoopsの概念、およびそれらを使用する方法と場所について説明します。
学習内容:
- ビデオチュートリアルを見る
- クラスとオブジェクト
- Pythonのコンストラクタ
- 継承
- Pythonでのメソッドのオーバーロード
- Pythonでのメソッドのオーバーライド
- Pythonでのデータ隠蔽
- 結論
- 推奨読書
ビデオチュートリアルを見る
ビデオ#1:Pythonのクラス、オブジェクト、コンストラクター
ビデオ#2:Pythonでの継承の概念
ビデオ#3:Pythonでのオーバーロード、オーバーライド、データ隠蔽
クラスとオブジェクト
- Pythonはオブジェクト指向プログラミング言語であり、プログラミングはオブジェクトにより重点を置いています。
- Pythonのほとんどすべてがオブジェクトです。
クラス
Pythonのクラスはオブジェクトのコレクションであり、クラスは青写真、スケッチ、またはプロトタイプと考えることができます。オブジェクトのすべての詳細が含まれています。
実世界の例では、動物はクラスです。これは、世界にはさまざまな種類の動物があり、これらはすべて動物と呼ばれるクラスに属しているためです。
クラスの定義
Pythonでは、キーワード「class」を使用してクラスを定義する必要があります。
構文:
class classname: #Collection of statements or functions or classes
例:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
上記の例では、「Myclass」というクラスを宣言し、いくつかの変数と関数をそれぞれ宣言して定義しました。
クラス内に存在する関数または変数にアクセスするには、クラス名のオブジェクトを作成してクラス名を使用できます。
まず、クラス名を使用してそれらにアクセスする方法を見てみましょう。
例:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
出力
10
出力:
オブジェクト
オブジェクトは通常、クラスのインスタンスです。クラス内に存在するすべてのものにアクセスするために使用されます。
オブジェクトの作成
構文:
variablename = classname
例:
ob = MyClass()
これにより、「ob」という名前の新しいインスタンスオブジェクトが作成されます。このオブジェクト名を使用して、クラスMyClass内に存在するすべての属性にアクセスできます。
例:
class MyClass: a = 10 b = 20 def add(self): sum = self.a + self.b print(sum) #Creating an object of class MyClass ob = MyClass() #Accessing function and variables present inside MyClass using the object print(ob.a) print(ob.b) ob.add()
出力:
10
20
30
出力:
Pythonのコンストラクタ
Pythonのコンストラクターは、オブジェクトの作成時に実行時にクラスのメンバーを初期化するために使用される特別なメソッドです。
Pythonには、二重アンダースコア(__)で始まる特別な組み込みクラスメソッドがいくつかあり、Pythonでは特別な意味があります。
コンストラクターの名前は常に__init __()になります。
すべてのクラスにはコンストラクターが必要です。コンストラクターを明示的に作成しなくても、デフォルトのコンストラクターが自動的に作成されます。
例:
class MyClass: sum = 0 def __init__ (self, a, b): self.sum = a+b def printSum(self): print(“Sum of a and b is: ”, self.sum) #Creating an object of class MyClass ob = MyClass(12, 15) ob.printSum()
出力:
aとbの合計は次のとおりです:27
出力:
上記の例で観察した場合、__ init __()メソッドは呼び出されていません。これは、そのクラスへのオブジェクトを作成し、データメンバーがあれば初期化するときに自動的に呼び出されるためです。
コンストラクターは値を返さないため、returnステートメントが含まれていないことを常に覚えておいてください。
継承
継承は、OOPの最も強力な概念の1つです。
別のクラスのプロパティを継承するクラスは、継承と呼ばれます。
プロパティを継承するクラスを子クラス/サブクラスと呼び、プロパティを継承するクラスを親クラス/基本クラスと呼びます。
Pythonは、次の3種類の継承を提供します。
- 単一継承
- マルチレベルの継承
- 多重継承
推奨読書= >> Javaでの継承
#1)単一継承
単一継承では、1つのクラスが1つのクラスのプロパティのみを継承します。
例:
class Operations: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: “, sum) class MyClass(Operations): c = 50 d = 10 def sub(self): sub = self.c – self.d print(“Subtraction of c and d is: ”, sub) ob = MyClass() ob.add() ob.sub()
出力:
aとbの合計は:30
cとdの減算は次のとおりです:40
出力:
上記の例では、「Operations」クラスのプロパティをクラス「MyClass」に継承しています。
したがって、MyClassオブジェクトを使用して、「Operations」クラスに存在するすべてのメソッドまたはステートメントにアクセスできます。
#2)マルチレベルの継承
マルチレベル継承では、1つ以上のクラスが基本クラスとして機能します。
つまり、2番目のクラスは最初のクラスのプロパティを継承し、3番目のクラスは2番目のクラスのプロパティを継承します。したがって、2番目のクラスはParentクラスとChildクラスの両方として機能します。
例:
class Addition: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: ”, sum) class Subtraction(Addition): def sub(self): sub = self.b-self.a print(“Subtraction of a and b is: ”, sub) class Multiplication(Subtraction): def mul(self): multi = self.a * self.b print(“Multiplication of a and b is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
出力:
aとbの合計は:30
aとbの減算は次のとおりです:10
aとbの乗算は次のとおりです:200
出力:
上記の例では、クラス「Subtraction」はクラス「Addition」のプロパティを継承し、クラス「Multiplication」はクラス「Subtraction」のプロパティを継承します。したがって、クラス「減算」は基本クラスと派生クラスの両方として機能します。
#3)多重継承
複数のクラスのプロパティを継承するクラスは、多重継承と呼ばれます。
さらに読む= >> Javaは多重継承をサポートしていますか?
例:
class Addition: a = 10 b = 20 def add(self): sum = self. a+ self.b print(“Sum of a and b is: “, sum) class Subtraction(): c = 50 d = 10 def sub(self): sub = self.c-self.d print(“Subtraction of c and d is: ”, sub) class Multiplication(Addition,Subtraction): def mul(self): multi = self.a * self.c print(“Multiplication of a and c is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
出力:
aとbの合計は:30
cとdの減算は次のとおりです:10
aとcの掛け算は:500
出力:
Pythonでのメソッドのオーバーロード
同じ名前で、パラメーターのタイプまたはパラメーターの数が異なる複数のメソッドは、メソッドのオーバーロードと呼ばれます。
例:
def product(a, b): p = a*b print(p) def product(a, b, c): p = a*b*c print(p) #Gives you an error saying one more argument is missing as it updated to the second function #product(2, 3) product(2, 3, 5)
出力:
30
出力:
出力:
上記の例を見ると、同じ名前「product」でパラメーターの数が異なる2つの関数を定義しているため、Pythonではメソッドのオーバーロードはサポートされていません。
ただし、Pythonでは、最新の定義が更新されるため、関数product(a、b)は使用できなくなります。
Pythonでのメソッドのオーバーライド
サブクラスメソッドがスーパークラスメソッドで宣言されているのと同じ名前である場合、それはメソッドオーバーライドと呼ばれます
メソッドのオーバーライドを実現するには、継承を使用する必要があります。
例:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
出力:
私はBにいます
出力:
Pythonでのデータ隠蔽
データの非表示とは、他のクラスメンバーがデータにアクセスできないように、データを非公開にすることを意味します。宣言されているクラスでのみアクセスできます。
Pythonでは、変数を非表示にする場合は、変数名の前に二重アンダースコア(__)を記述する必要があります。
例:
Class MyClass: __num = 10 def add(self, a): sum = self.__num + a print(sum) ob = MyClass() ob.add(20) print(ob.__num) #The above statement gives an error because we are trying to access private variable outside the class
出力:
30
トレースバック(最後の最後の呼び出し):
ファイル「DataHiding.py」、10行目、
印刷(期限が.__かどうか)
AttributeError:MyClassインスタンスには
属性なし ‘__num
5年間の経験のためのphpインタビューの質問と回答
出力:
結論
クラスは、オブジェクトのすべての詳細を含むブループリントまたはテンプレートであり、オブジェクトはクラスのインスタンスです。
- 別のクラスのプロパティをクラスに入れたい場合、これは継承によって実現できます。
- 継承には、単一継承、マルチレベル継承、多重継承の3つのタイプがあります。
- メソッドのオーバーロードはPythonではサポートされていません。
- メソッドのオーバーライドは、別のクラスで定義されている同じ関数の実装をオーバーライドするために使用されます。
- データ属性をプライベートにするか、非表示にして、定義されているクラスの外部からアクセスできないようにすることができます。
今後のチュートリアルでは、追加のPythonの概念について詳しく説明します。
推奨読書
- Python変数
- 例を含むPythonDateTimeチュートリアル
- Python文字列関数
- 初心者のためのPythonチュートリアル(実践的な無料のPythonトレーニング)
- Python制御ステートメント(PythonのContinue、Break、Pass)
- Python演算子
- Python関数
- Pythonの導入とインストールプロセス