ホームページ  >  記事  >  バックエンド開発  >  オブジェクト指向 Python の基本概念の紹介

オブジェクト指向 Python の基本概念の紹介

高洛峰
高洛峰オリジナル
2017-03-17 16:30:581404ブラウズ

Pythonは、クラス(class)とオブジェクト(object)を使用して、オブジェクト指向プログラミング(OOP)プログラミングを実行します。

オブジェクト指向の主な目的は、プログラムの再利用性を向上させることです。私たちがオブジェクト指向プログラミングにこれほど早くから取り組んだ理由は、Python の概念全体がオブジェクトに基づいているためです。 OOP を理解することが、Python をさらに学習するための鍵となります。

以下は分類に基づいたオブジェクト指向の理解です。

似たものはカテゴリに分類される

人間の認知では、物事はその

属性の類似度に応じて分類され、カテゴリに名前が付けられます。たとえば、鳥の共通の属性は、羽毛があり、卵を産んで子孫を残すということです。特定の鳥はすべて、鳥の原型に基づいています。

オブジェクト指向は、上記の人間の認知プロセスをシミュレートします。 Python 言語では、格好良く聞こえるように、上記の「もの」をオブジェクトと呼びます。

最初に鳥を定義します

class Bird(object):
    have_feather = True
    way_of_reproduction  = 'egg'

Bird というカテゴリ (クラス) を定義します。このアナロジーに属するステートメント ブロックでは、2 つの

変数 を定義します。1 つは羽の有無 (have_feather)、もう 1 つは再生方法 (way_of_reproduction) です。これら 2 つの変数は、先ほど述べた属性に対応します。括弧とその内容については、当面は説明を省略し、質問1とさせていただきます。

サマーという名前のひよこを育てるとします。それは物体であり、鳥に属します。前に定義したクラスを使用します:

summer = Bird()
print summer.way_of_reproduction

最初の文

を通してオブジェクトを作成し、夏がbirdというカテゴリのオブジェクトであり、その属性への参照がobject属性を通じて行われることを説明します。 (オブジェクト.属性)。

可哀想な夏、あなたは単なる毛むくじゃらの卵製品で、とても繊細です。

アクション

日常の認知において、属性を通じてカテゴリーを識別するとき、私たちはこのものが何ができるかに基づいてカテゴリーを区別することがあります。たとえば、鳥は動きます。このようにして、鳥は家というカテゴリーから区別されます。これらのアクションは、位置の変更につながる動きなど、特定の結果をもたらします。

これらの「

behavior」属性の一部はメソッドです。 Pythonでは、クラス内に関数を定義することでメソッドを記述します。

class Bird(object):
    have_feather = True
    way_of_reproduction = 'egg'
    def move(self, dx, dy):
        position = [0,0]
        position[0] = position[0] + dx
        position[1] = position[1] + dy
        return position
summer = Bird()
print 'after move:',summer.move(5,8)
鳥のカテゴリを再定義しました。 Bird

は、動きを表すメソッド move である新しいメソッド属性

を追加しました。 (このメソッドが愚かであることは認めます。次の講義を読んだ後で、より興味深いメソッドを定義できます。) (パラメータには self があり、オブジェクト自体を参照しやすくするためのものです。メソッドを使用するかどうかに関係なく、self でなければなりません。self に関する内容は次の講義で展開します)

他の 2 つのパラメーター dx、dy は、x 方向と y 方向に移動した距離を表します。 move メソッドは最終的に計算された位置を返します。

最終的に move メソッドを呼び出したとき、dx と dy の 2 つのパラメーターを渡すだけであり、self パラメーターを渡す必要はありませんでした (self は内部使用のみのため)。

私の夏は準備ができています。

サブカテゴリ

カテゴリ自体はさらにサブカテゴリに細分化できます

たとえば、鳥はさらに鶏、雁、コウライウグイスに分類できます。

OOP では、上記の概念を

inheritance

(継承) を通して表現します。

class Chicken(Bird):
    way_of_move = 'walk'
    possible_in_KFC = True
class Oriole(Bird):
    way_of_move = 'fly'
    possible_in_KFC = False
summer = Chicken()
print summer.have_feather
print summer.move(5,8)
新しく定義された Chicken クラスは 2 つの属性を追加します: 移動方法 (way_of_move)、KFC に見られる可能性があります (possible_in_KFC)

クラス定義では、Bird は括弧内にあります。これは、Chicken が Bird のサブクラスであること、つまり、Chicken が Bird から継承していることを示しています。当然のことながら、Bird は Chicken の親クラスです。ニワトリはバードのすべての特性を享受します。 Summer は Chicken クラスであると宣言しただけですが、親クラスの属性を継承 (変数属性 have_feather であれメソッド属性 move であれ) を通じて享受します

新しく定義された Oriole (オリオール) クラスも Birds から継承しています。コウライウグイス オブジェクトを作成すると、そのオブジェクトには自動的に鳥のプロパティが設定されます。

継承システムを通じて、プログラム内で繰り返される情報や繰り返しのステートメントを減らすことができます。鳥から継承せずに 2 つのクラスを個別に定義する場合は、鳥の属性をそれぞれ鶏クラスとコウライウグイスの定義に入力する必要があります。プロセス全体が退屈になる可能性があるため、オブジェクト指向によりプログラムの再利用性が向上します。

(質問 1 に戻ります。括弧内のオブジェクト。括弧がオブジェクトの場合、このクラスには親クラスがないことを意味します (終了))

世界を理解するために、私たちはオブジェクト指向が人間の思考習慣と一致しているときからこの認知プロセスを実践してきました。いわゆるプロセス指向、つまり 1 つのステートメントを実行してから次のステートメントを実行するのは、どちらかというと機械的な思考です。オブジェクト指向プログラミングを通じて、私たちの思考における複雑なアイデアをより便利に表現できるようになります。

概要

属性に従って物事を分類する(オブジェクトをクラスとして分類する)

メソッドはアクションを表す属性です

親クラスとサブクラスの関係を説明するには継承を使用します。サブクラスは、親クラスのすべてのプロパティを自動的に持ちます。

selfはクラス定義に基づいて作成されたオブジェクトを表します。

オブジェクトを作成します: object name = class name()

オブジェクトの属性を参照します: object.attribute


以上がオブジェクト指向 Python の基本概念の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。