オブジェクト指向プログラミング (OOP)、この用語を見ると必ず Java を連想します。実際、オブジェクト指向プログラミング スタイルは Java によって普及しており、Java に加えて、C++、C#、Swift、JavaScript、php など、そしてもちろん Python など、多くの OOP 言語が存在します。
Python はオブジェクト指向のプログラミング スタイルを提供します。今日は、基礎ゼロの初心者でもこの記事を読んだ後に Python のオブジェクト指向を完全に理解できるように、Python のオブジェクト指向についてステップごとに説明します。この記事では、Python オブジェクト指向プログラミングの基礎知識を以下のトピックから紹介します。
1 クラス
2 オブジェクト
3 継承
4 属性
5 メソッド
1 基本的な概念
1.1 クラス
OOP のクラスとは何ですか?
まず、図を使って概念を理解してください。
上の図から、クラス、オブジェクト、プロパティ、メソッド、ピカチュウの情報がわかります。
これは OOP と何の関係があるのでしょうか? 上の画像は、まさに OOP の概念を理解するのに役立ちます。
それでは、最初の話題に入ります。OOP におけるクラスとは何ですか? クラスの定義は「クラスは同じ型のオブジェクトの集合である」です。この定義を上の例に関連付けます。この写真では、クラスの名前である Pokémon という名前の長方形の箱があることがわかります。
つまり、クラスはオブジェクトのコレクションにすぎません。したがって、ポケモンユニバースのすべてのポケモンは「ポケモン」カテゴリに属します。
理解を確実にするために、別の例を挙げてみましょう。日産、テスラ、フォード、トヨタなど、私たちがよく目にする車を例に挙げると、これらは個々の物体として捉えられ、その一連の物体の集合体が「車」です。
1.2 オブジェクト
オブジェクトの概念についてはこれまでも繰り返し述べてきましたが、次に詳しく説明します。OOP では、オブジェクトはクラスのコンポーネントまたはメンバーです。エルフの例を考えると、各エルフはエルフ クラスのオブジェクトです。例えば。ピカチュウはポケモンクラスのオブジェクトです。たとえば、トヨタは自動車の対象です。
1.3 プロパティ
ポケモンの例に戻り、画像内のピカチュウに注目してみましょう。しばらく様子を見てください。何が見えますか?
ピカチュウの画像を観察すると、2 つの耳、2 本の手、2 本の足、頬に 2 つの小さな赤い点、そして目立つ黄色があることがわかります。写真の隣接テーブルには、name="Pikachu"、type="electric"、health=70 などの項目もいくつかあります。
したがって、これらはすべて属性と呼ばれ、クラスまたはオブジェクトに関する追加情報を提供する要素です。この場合、これらすべてのプロパティは、色や健康状態など、ピカチュウ オブジェクトに関する追加情報を提供します。
1.4 方法
ポケモンの例では、図に Attack()、dodge()、evolve() などのものがあり、これらはメソッドと呼ばれます。より簡単に説明すると、メソッド ベースは特定のオブジェクトに関連付けられたアクションです。この場合、アクションはピカチュウ オブジェクトに関連しています。この時点で、多くの学生はオブジェクト指向のいくつかの概念について基本を理解している必要があります。次に、これを実践して、Python オブジェクト指向を使用する方法を見てみましょう。
2 練習
2.1 クラスの作成
class Pokemon():
上記のコードからわかるように、Python でクラスを作成する場合は、特定の構造に従う必要があります。
キーワード class から始めると、Python は作成しているものがクラスとして扱われることを認識できるようになります。キーワード class の後にクラス名 (この場合はポケモン) が続きます。
最後に () と : 文字が続きます。もちろん、クラスはまだ作成されていないため、他のコンテンツが必要です。
__init__ メソッドを作成する
クラス作成タスクを続けると、次のステップでは __init__ という非常に特殊なメソッドを作成します。
この __init__ メソッドとは何ですか?
この概念を簡単に理解するために、init メソッドは Java のコンストラクター メソッドに似ていると考えることができます。
まず特定のコードを指定します。
class Pokemon():
def __init__():
上記のコードからわかるように、__init__ メソッドは Python で作成されています。ここで、Python で関数やメソッドを作成するために主に使用される def という名前のキーワードに気づきました。
プロパティの追加
__init__() メソッドは現在定義されていますが、まだ完全には定義されていません。
定義を完了するには、一部のパラメーターを __init__() メソッドに渡す必要があります。
次に、これらのパラメータを __init__() メソッドに追加しましょう。
class Pokemon():
def __init__(self,name,Type,health):
self.name = name
self.Type = Type
self.health = health
上記のコードからわかるように、__init__() メソッドに多くのパラメーターを渡しました。
さて、戻って、ここでどのようなパラメータが渡されるのかを理解しましょう。先ほど紹介したコンセプトを覚えていますか?
ピカチュウは黄色であること、頬に赤い点が2つあることなどについて話しました。これらはオブジェクトに関連付けられたプロパティであり、この __init__() メソッドでこれらのプロパティを定義します。
さらに、もう 1 つの質問について説明しましょう。self の用途は何ですか? 簡単に説明すると、self はこれらのプロパティをクラス (この場合はポケモン) に接続するキーワードです。
2.2 作成方法
ここまでで、クラス、__init__() という名前の特別なメソッド、およびクラスの属性を宣言しました。
次に、最後の部分であるメソッドの作成に進みます。
class Pokemon():
def __init__(self,name,Type,health):
self.name = name
self.Type = Type
self.health = health
def attack(self):
print("Electric attack!")
def dodge(self):
print("Pikachu Dodge!")
def evolve(self):
print("Evolving to Raichu!")
上記のコードからわかるように、攻撃()、回避()、進化()という名前の3つのメソッドを作成します。
このコードを見ると、self という名前のパラメータを各メソッドに渡していることがわかります。
ここでは、self キーワードを使用してこのメソッドをクラスに接続しています。
ここまでで、完全なクラスが作成されました。
2.3 オブジェクトの作成
まず、オブジェクトを作成するためのコードを入力します。ここでは、pk1 という名前のオブジェクトを作成します。
pk1 = Pokemon("Pikachu","Electric",120)
オブジェクトを作成した後、多くの操作を実行できます。
プロパティにアクセスする
<object name>.<property> メソッドを通じてオブジェクトのプロパティにアクセスできます。具体的なコードを見てみましょう。
pk1.name # 输出:Pikachu
pk1.Type # 输出:Electric
pk1.health # 输出:120
アクセス方法
アクセス メソッドとアクセス プロパティ タイプ <オブジェクト名>.<メソッド> も同様に、より明確に説明するために特定のコードを使用します。
pk1.attack() # 输出:Electric attack!
pk1.dodge() # 输出:Pikachu Dodge!
pk1.evolve() # 输出:Evolving to Raichu!
ここまで、Python オブジェクト指向プログラミングの基本的な内容を説明しました。次に、さらに一歩進めて、オブジェクト指向プログラミングに継承を導入してみましょう。
2.4 継承
継承は OOP の重要な概念の 1 つであり、この概念も簡単な例を使用すると理解しやすくなります。
スーパーカーであるマクラーレン 720S スパイダーの例を考えてみましょう。ご覧のとおり、他のほとんどの車と同様に、ドア、フロントガラス、4 つの車輪、ヘッドライト、テールライトなどの共通の機能がいくつかあります。ただしスーパーカーなので、720馬力のV8ターボエンジンやマクラーレン開発のカスタムトランスミッション、カスタムAWD(全輪駆動)システムなど、独自のカスタムが施されている。
これをオブジェクト指向の用語に関連付けると、自動車はその親クラス (この場合はそもそも自動車クラス) から特定の特性を継承すると言えます。これが「継承」の考え方です。継承は、要素がその親クラスから特性を取得する現象です。
この場合、マクラーレン 720S スパイダーは、自動車クラスのすべての共通特性を継承していますが、同時に、それ自体の特定の特別な特性も備えています。スーパークラスとサブクラス 要素が継承するクラス (この場合は car クラス) はスーパークラスと呼ばれ、普遍的です。これらの性質を継承した特別なクラスをサブクラス(Subclass)と呼びます。
次に、これらの概念を Python で実装します。この例では、2 つのクラスを作成します。1 つはスーパー クラスの Car です。もう一つはサブクラスであるマクラーレンというクラスです。この McLaren クラスは、Car クラスのすべてのプロパティを継承します。
class Car():
def __init__(self,ndoors,nwheels,tailLight,headLight):
self.ndoors = ndoors
self.nwheels = nwheels
self.tailLight = tailLight
self.headLight = headLight
ここでは、Car という名前の最初のクラスが作成されました。ここで、このクラスのすべてのプロパティを継承する McLaren という新しいクラスを作成します。
class McLaren(Car):
def __init__(self,ndoors,nWheels,tailLight,headLight,Engine,Wheel_Drive):
Car.__init__(self,ndoors,nWheels,tailLight,headLight)
self.Engine = Engine
self.Wheel_Drive = Wheel_Drive
def Drive(self):
print("I am driving McLaren 720S Spyder")
上記のコードからも分かるように、McLarenクラスはCarクラスを継承しているため、McLarenクラスを作成する際にパラメータの一つとしてCarを使用するのがPythonのクラス継承の仕組みです。
次に、McLaren オブジェクトを作成し、それが Car 機能を継承しているかどうかを確認します。
mk1 = McLaren("4","4","Yes","Yes","V8","AWD")
次に、オブジェクトのプロパティに再度アクセスします。
mk1.Engine # 输出:V8
mk1.Wheel_Drive # 输出:AWD
ここでは、基本クラス Car では利用できない、McLaren オブジェクトで特別に定義された特別なプロパティにアクセスできることがわかります。ここでは基本クラスを継承しました。基本クラスのプロパティが McLaren クラスに継承されるかどうかを見てみましょう。
mk1.headLight # 输出:YES
mk1.ndoors # 输出:4
mk1.nWheels # 输出:4
ご覧のとおり、McLaren クラスの新しく作成されたオブジェクトは Car 基本クラスのすべての特性を継承しており、このコンテキストで継承が正しく実装されていることを示しています。
これまで、Pythonのクラス、オブジェクト、特殊メソッド、属性、メソッドなどの概念と具体的な実装を、基本概念から実践まで網羅し、Pythonのオブジェクトに関する関連知識や内容を網羅的に紹介してきました。 Python について理解していますか? 対面で?
Pythonに関する技術留保
ここでは、誰でも学べる無料のコースをいくつか紹介したいと思います。以下はコースのスクリーンショットです。下部にある QR コードをスキャンしてすべてを取得してください。
1. Pythonの全方位学習ルート
2. 学習ソフト
労働者が仕事をうまくやりたいなら、まず道具を研ぐ必要があります。Python を学習するために一般的に使用される開発ソフトウェアがここにあり、誰もが時間を大幅に節約できます。
3. 学習教材
4. 実用的な情報
実践こそが真実をテストするための唯一の基準です。ここの圧縮パッケージは、空き時間に個人の能力を向上させるのに役立ちます。
5. ビデオコース
さて、今日の共有はここで終わります。幸せな時間はいつも短いです。もっとコースを学びたい友達、心配しないでください、もっと驚きがあります~