このチュートリアルでは、オブジェクト指向プログラミングアプローチのためのPythonでの抽象化の概念について説明します。
基本的に、抽象化は、プロセスまたはメソッドの内部実装をユーザーから隠すことに焦点を当てています。したがって、ユーザーは自分が何をしているのかはわかりますが、作業がどのように行われているのかはわかりません。
<! --ptnonline336-2->
&nbsp;
Pythonの抽象化とは何ですか?
たとえば、人々は自動車を何千もの個々の部品の集まりとは考えていません。代わりに、彼らはそれを独自の振る舞いを持つ明確に定義されたオブジェクトと見なします。この抽象化により、人々は車を構成する部品の複雑さに気付かずに車を運転することができます。彼らはエンジントランスミッションとブレーキシステムの詳細を無視することができます。代わりに、オブジェクト全体を使用できます。
抽象化と階層分類の使用を操作するための強力な方法。これにより、複雑なシステムのセマンティクスを階層化し、より管理しやすい部分に分割することができます。外では、車は単一のオブジェクトです。中に入ると、車がステアリング、ブレーキ、オーディオシステム、シートベルトなどのいくつかのサブシステムで構成されていることがわかります。次に、これらのサブシステムのそれぞれが小さなブロックで構成されています。
ポイントは私たちが運転することです階層的抽象化を使用する自動車(またはその他の複雑なシステム)。
これは、OOPの概念を使用するコンピュータープログラムにも適用できます。これがオブジェクト指向プログラミングの本質です。
Pythonの抽象クラスとメソッド
抽象クラスを宣言するには、最初に abc
モジュールをインポートする必要があります。 。例を見てみましょう。
from abc import ABC class abs_class(ABC):#abstract methods
Here abs_class
&it is a abstract抽象メソッドまたはその他のメソッドを定義できるクラス。
プロパティとして、抽象クラスは任意の数の抽象メソッドを持つことができ、任意の数と共存できます。他の方法の。たとえば、以下を参照してください。
from abc import ABC、abstractmethod class abs_class(ABC):#normal method def method(self): #メソッド定義@abstractmethod def Abs_method(self):#Abs_method定義
ここでmethod()
&normalメソッド、 Abs_method()
&抽象メソッドabcモジュールから@abstractmethod
を実装します。
例
抽象クラスとメソッドについて理解したので、例を見てみましょう。
from abc import ABC、abstractmethod class Absclass(ABC):def print(self、x):print( "Passed value:"、 x)@abstractmethod def task(self):print( "We are inside Absclass task")class test_class(Absclass):def task(self):print( "We are inside test_class task")class example_class(Absclass):def task (self):print( "私たちはexample_classタスク内にいます")#test_classのオブジェクトが作成されましたtest_obj = test_class()test_obj.task()test_obj.print(100)#example_classのオブジェクトが作成されましたex ample_obj = example_class()example_obj.task( )example_obj .print(200)print( "test_objはAbsclassのインスタンスですか?"、isinstance(test_obj、Absclass))print( "example_objはAbsclassのインスタンスですか?"、isinstance(example_obj、Absclass))
出力:
ここで、
task()
メソッドとprint()
メソッドが含まれています。この抽象クラスから継承された他の2つのクラスは、 test_class
とexample_class
です。どちらにも独自のtask()
メソッド(抽象メソッド拡張)があります。
ユーザーがtest_classクラスとexample_classクラスからオブジェクトを作成し、 task()メソッドを呼び出した後
これらの両方について、両方のクラス内の非表示の task()
メソッド定義が機能します。これらの定義はユーザーには表示されません。抽象クラスAbsclass
の抽象メソッドtask()
が実際に呼び出されることはありません。
ただし、 print()
の場合メソッドはtest_objやexample_objのように呼び出され、 print()
Absclassメソッドは抽象メソッドではないため呼び出されます。
注:抽象クラスをインスタンス化することはできません。 。これによりエラーが発生します。