ホームページ バックエンド開発 Python チュートリアル Python - 基本的なオブジェクト指向の概念

Python - 基本的なオブジェクト指向の概念

Oct 19, 2016 am 11:19 AM
オブジェクト指向

Python はクラスとオブジェクトを使用してオブジェクト指向プログラミング (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というカテゴリのオブジェクトであり、その属性への参照がオブジェクトを通じて行われることを説明します。 .property (オブジェクト.属性)。

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

アクション

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

そのような「動作」属性の一部はメソッドです。 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 では、継承を通じて上記の概念を表現します。

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


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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go言語を使用してオブジェクト指向のイベント駆動型プログラミングを実装する方法 Go言語を使用してオブジェクト指向のイベント駆動型プログラミングを実装する方法 Jul 20, 2023 pm 10:36 PM

Go 言語を使用してオブジェクト指向イベント駆動プログラミングを実装する方法 はじめに: オブジェクト指向プログラミング パラダイムはソフトウェア開発で広く使用されており、イベント駆動プログラミングは、トリガーと処理を通じてプログラム フローを実現する一般的なプログラミング モデルです。イベント、コントロール。この記事では、Go 言語を使用してオブジェクト指向のイベント駆動型プログラミングを実装する方法とコード例を紹介します。 1. イベント駆動型プログラミングの概念 イベント駆動型プログラミングは、プログラムのフロー制御をイベントのトリガーと処理に移す、イベントとメッセージに基づくプログラミング モデルです。イベント駆動型で

Java で Jackson を使用する @JsonIdentityInfo アノテーションの重要性は何ですか? Java で Jackson を使用する @JsonIdentityInfo アノテーションの重要性は何ですか? Sep 23, 2023 am 09:37 AM

@JsonIdentityInfo アノテーションは、Jackson ライブラリ内でオブジェクトに親子関係がある場合に使用されます。 @JsonIdentityInfo アノテーションは、シリアル化および逆シリアル化中にオブジェクトの ID を示すために使用されます。 ObjectIdGenerators.PropertyGenerator は、使用されるオブジェクト識別子が POJO プロパティから取得される状況を表すために使用される抽象プレースホルダー クラスです。構文@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

PHP の高度な機能: オブジェクト指向プログラミングのベスト プラクティス PHP の高度な機能: オブジェクト指向プログラミングのベスト プラクティス Jun 05, 2024 pm 09:39 PM

PHP における OOP のベスト プラクティスには、命名規則、インターフェイスと抽象クラス、継承とポリモーフィズム、依存関係の注入が含まれます。実際のケースには、ウェアハウス モードを使用してデータを管理する場合や、ストラテジー モードを使用して並べ替えを実装する場合などがあります。

Go でオブジェクト指向プログラミングを探索する Go でオブジェクト指向プログラミングを探索する Apr 04, 2024 am 10:39 AM

Go 言語は、型定義とメソッドの関連付けを通じてオブジェクト指向プログラミングをサポートします。従来の継承はサポートされていませんが、合成を通じて実装されます。インターフェイスは型間の一貫性を提供し、抽象メソッドを定義できるようにします。実際の事例では、顧客操作の作成、取得、更新、削除など、OOP を使用して顧客情報を管理する方法を示します。

Golang にはクラスのようなオブジェクト指向機能はありますか? Golang にはクラスのようなオブジェクト指向機能はありますか? Mar 19, 2024 pm 02:51 PM

Golang (Go 言語) には伝統的な意味でのクラスの概念はありませんが、構造体と呼ばれるデータ型が提供され、これによってクラスと同様のオブジェクト指向機能を実現できます。この記事では、構造体を使用してオブジェクト指向機能を実装する方法を説明し、具体的なコード例を示します。構造体の定義と使用法 まず、構造体の定義と使用法を見てみましょう。 Golang では、type キーワードを通じて構造を定義し、必要に応じて使用できます。構造には属性を含めることができます

PHP オブジェクト指向プログラミングにおけるフライウェイト パターンの分析 PHP オブジェクト指向プログラミングにおけるフライウェイト パターンの分析 Aug 14, 2023 pm 05:25 PM

PHP オブジェクト指向プログラミングにおけるフライウェイト パターンの分析 オブジェクト指向プログラミングでは、デザイン パターンは一般的に使用されるソフトウェア設計手法であり、コードの可読性、保守性、スケーラビリティを向上させることができます。フライウェイト パターンは、オブジェクトを共有することでメモリのオーバーヘッドを削減する設計パターンの 1 つです。この記事では、PHP でフライウェイト モードを使用してプログラムのパフォーマンスを向上させる方法を説明します。フライ級モードとは何ですか?フライウェイト パターンは、異なるオブジェクト間で同じオブジェクトを共有することを目的とした構造設計パターンです。

Go言語のオブジェクト指向機能の分析 Go言語のオブジェクト指向機能の分析 Apr 04, 2024 am 11:18 AM

Go 言語は、オブジェクト指向プログラミング、構造体によるオブジェクトの定義、ポインター レシーバーを使用したメソッドの定義、インターフェイスによるポリモーフィズムの実装をサポートしています。オブジェクト指向の機能は、Go 言語でのコードの再利用、保守性、カプセル化を提供しますが、クラスや継承、メソッド シグネチャ キャストといった従来の概念が欠如しているなどの制限もあります。

PHP オブジェクト指向プログラミングの深い理解: オブジェクト指向プログラミングのデバッグ手法 PHP オブジェクト指向プログラミングの深い理解: オブジェクト指向プログラミングのデバッグ手法 Jun 05, 2024 pm 08:50 PM

オブジェクトのステータスの追跡、ブレークポイントの設定、例外の追跡を習得し、xdebug 拡張機能を利用することで、PHP オブジェクト指向プログラミング コードを効果的にデバッグできます。 1. オブジェクトのステータスを追跡する: var_dump() と print_r() を使用して、オブジェクトの属性とメソッドの値を表示します。 2. ブレークポイントの設定: 開発環境にブレークポイントを設定すると、実行がブレークポイントに到達するとデバッガが一時停止するため、オブジェクトのステータスを簡単に確認できます。 3. 例外のトレース: try-catch ブロックと getTraceAsString() を使用して、例外発生時のスタック トレースとメッセージを取得します。 4. デバッガーを使用します。xdebug_var_dump() 関数は、コードの実行中に変数の内容を検査できます。

See all articles