ホームページ > バックエンド開発 > Python チュートリアル > Python はオブジェクト指向ですか、それともプロセス指向ですか?

Python はオブジェクト指向ですか、それともプロセス指向ですか?

青灯夜游
リリース: 2023-01-05 16:54:49
オリジナル
10495 人が閲覧しました

Python はオブジェクト指向です。 Python 言語は設計当初からオブジェクト指向プログラミング言語として位置づけられており、「Python のすべてはオブジェクトである」というのが Python プログラミング言語の完璧な解釈です。クラスとオブジェクトは Python の重要な機能です。他のオブジェクト指向言語と比較して、Python はクラスとオブジェクトを簡単に作成できます。同時に、Python はオブジェクト指向の 3 つの主要な機能であるカプセル化、継承、ポリモーフィズムもサポートしています。

Python はオブジェクト指向ですか、それともプロセス指向ですか?

このチュートリアルの動作環境: Windows7 システム、Python3 バージョン、DELL G3 コンピューター

Python はインタープリタ型言語ですが、Python 言語はPython は当初からオブジェクト指向プログラミング言語として位置づけられており、「Python のすべてはオブジェクトである」というのは Python プログラミング言語の完璧な解釈です。

オブジェクト指向とは

オブジェクト指向プログラミングはプロセス指向プログラミングに基づいて開発されており、プロセス指向プログラミングよりも多くの機能を備えています。指向のプログラミング、強力な柔軟性と拡張性。オブジェクト指向プログラミングはプログラマの成長において分岐点であり、初心者の多くはオブジェクト指向プログラミングを理解できないためにプログラミングの学習を断念してしまいます。

オブジェクト指向プログラミング (略して OOP) は、コードをカプセル化する方法です。実際、これまでの章の学習で、私たちはすでにカプセル化にさらされています。たとえば、乱雑なデータをリストに投げ込むことは単純なカプセル化であり、これはデータ レベルのカプセル化です。一般的に使用されるコード ブロックを関数にパッケージ化することは、これもステートメントレベルでの一種のカプセル化です。

コードのカプセル化では、実際には関数を実装する特定のコードが隠蔽され、ユーザーにはインターフェイスのみが残ります。コンピューターを使用するのと同じように、ユーザーはキーボードとマウスを使用して実装するだけです。内部的にどのように動作するかを知る必要はありません。

オブジェクト指向プログラミングもカプセル化のアイデアですが、上記の 2 つのカプセル化よりも明らかに高度であり、現実世界のものをより適切にシミュレートし (オブジェクトとして扱う)、カプセル化することができます。データと、特性を記述するコード ブロック (関数) をまとめて説明します。

たとえば、ゲームでカメのキャラクターをデザインする場合、それをどのように実装すればよいでしょうか?オブジェクト指向の考え方を使用すると簡単になります。これは次の 2 つの側面で説明できます。

  • 表面の特徴から説明します。たとえば、緑色、脚が 4 本、重さ 10 です。 kg、シェル付きなど。

  • その行動に基づいて説明してください。たとえば、這うこと、食べること、寝ること、頭と手足を甲羅の中に引っ込めることなどです。

カメをコードで表現すると、表面の特徴は変数で表現でき、行動の特徴はさまざまな関数を設定することで表現できます。参照コードは次のとおりです。

class tortoise:
    bodyColor = "绿色"
    footNum = 4
    weight = 10
    hasShell = True
    #会爬
    def crawl(self):
        print("乌龟会爬")
    #会吃东西
    def eat(self):
        print("乌龟吃东西")
    #会睡觉
    def sleep(self):
        print("乌龟在睡觉")
    #会缩到壳里
    def protect(self):
        print("乌龟缩进了壳里")
ログイン後にコピー

上記のコードは、オブジェクト指向プログラミングのアイデアを示すためだけであることに注意してください。

したがって、特定のプログラムの観点から見ると、オブジェクト指向の考え方を使用すると、変数のみまたは関数のみを使用するよりも現実のものをより適切にシミュレートできます。

それだけでなく、Python では、整数 (int)、浮動小数点型 (float)、文字列 (str)、リスト (list)、タプル (tuple)、dict など、すべての変数が実際にはオブジェクトです。セット。辞書 (dict) を例にとると、辞書には複数の関数が含まれています。たとえば、keys() を使用して辞書内のすべてのキーを取得し、values() を使用して辞書内のすべての値を取得し、 item() を使用して、辞書内のすべてのキー、値のペアなどを取得します。

#オブジェクト指向関連用語

オブジェクト指向プログラミングを体系的に学習する前に、初心者はオブジェクト指向に関するいくつかの用語を理解する必要があります。正しい用語を知っていると、他の人とコードについて話し合うとき、または遭遇した問題の解決策を見つけようとするときに役立ちます。

オブジェクト指向では、一般的な用語には次のようなものがあります。

  • クラス: 無数の特定のインスタンスを作成できるテンプレートとして理解できます。 。たとえば、先ほど書いたカメはカメの種類だけを表していますが、これを介してさまざまな特徴を持つカメを表す無数のインスタンスが作成されます (このプロセスはクラスのインスタンス化とも呼ばれます)。

  • オブジェクト: クラスを直接使用することはできません。使用できるのは、クラスを通じて作成されたインスタンス (オブジェクトとも呼ばれます) のみです。これは車の図面と車の関係に似ており、図面自体 (クラス) を人が使用することはできず、図面によって作成された車 (オブジェクト) のみが使用できます。

  • 属性: クラス内のすべての変数は属性と呼ばれます。たとえば、tortoise クラスでは、bodyColor、footNum、weight、および hasShell はすべてこのクラスが所有するプロパティです。

  • メソッド: クラス内のすべての関数は通常、メソッドと呼ばれます。ただし、関数とは異なり、クラス メソッドには少なくとも 1 つの self パラメーターが含まれている必要があります (これについては後で詳しく説明します)。たとえば、tortoise クラスでは、crawl()、eat()、sleep()、およびprotect() はすべてこのクラスが所有するメソッドです。クラス メソッドは単独で使用できず、クラスのオブジェクトと一緒にのみ使用できます。

Python のオブジェクト指向機能:

クラスとオブジェクトは Python の重要な機能です。他のオブジェクトとの比較Python 指向言語を使用すると、クラスとオブジェクトを簡単に作成できます。同時に、Python はオブジェクト指向の 3 つの主要な特性、カプセル化、継承、ポリモーフィズムもサポートしています。

カプセル化

オブジェクト指向プログラミングにおけるオブジェクト (Object) という用語は、基本的にデータ (プロパティ) と、それらにアクセスして操作できる一連のデータと考えることができます。データ: メソッドのコレクション。従来の「プログラム =
データ構造アルゴリズム」はカプセル化され、「カバー」され、「プログラム = オブジェクト メッセージ」に簡略化されます。オブジェクトはクラスのインスタンスであり、クラスの抽象化をカプセル化する必要があります。カプセル化により、呼び出し元はオブジェクトの構築方法を気にせずにオブジェクトを直接使用できるようになります。

継承

  • クラス継承:

    継承の直接的な感覚は、コードを再利用する動作であるということです。継承は、通常のクラスに基づいて特別なクラス オブジェクトを確立することとして理解できます。サブクラスは、継承する親クラスと IS-A 関係を持ちます。

  • 多重継承:

    C# とは異なり、Python は複数のクラスの継承をサポートしています (C# は複数のインターフェイスから継承できますが、クラスは 1 つまでです)。多重継承メカニズムは便利な場合もありますが、状況が簡単に複雑になる可能性があります。

ポリモーフィズム

ポリモーフィズムとは、異なるオブジェクトに対して同じ操作を使用できるが、結果として複数の形式で現れる可能性があることを意味します。 Python では、オブジェクトの型が分からないが、そのオブジェクトで何かを行う必要がある場合に、ポリモーフィズムが使用されます。メソッドは多態性であり、演算子も同様です。

【関連する推奨事項: Python3 ビデオ チュートリアル ]

以上がPython はオブジェクト指向ですか、それともプロセス指向ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート