ホームページ  >  記事  >  バックエンド開発  >  Python のオブジェクト指向の中核基盤について説明する

Python のオブジェクト指向の中核基盤について説明する

coldplay.xixi
coldplay.xixi転載
2020-12-14 17:40:463036ブラウズ

Python ビデオ チュートリアルこのコラムでは、中核となる基本的なオブジェクト指向について紹介します

Python のオブジェクト指向の中核基盤について説明する

##関連する無料学習の推奨事項:

Python ビデオ チュートリアル

1. オブジェクト指向の概要

Python from 最初からオブジェクト指向言語として設計されているため、Python でクラスやオブジェクトを作成するのは簡単です。これまでにオブジェクト指向プログラミング言語に触れたことがない場合は、まずオブジェクト指向言語のいくつかの基本的な機能を理解し、頭の中でオブジェクト指向の基本的な概念を形成する必要があるかもしれません。これは Python の学習に役立ちます。オブジェクト指向プログラミング。

• Python はオブジェクト指向プログラミング言語です

• いわゆるオブジェクト指向言語は、言語内のすべての操作がオブジェクトを通じて実行されることを単に理解しています

プロセス指向 • プロセス指向とは、プログラムを 1 つずつステップに分解し、各ステップを抽象化してプログラムを完成させることを意味します。
• この書き方は、多くの場合、1 つの関数にのみ適しています。他の機能を実装したい場合、再利用性は比較的低いことが多いです。
• このプログラミング手法は人間の思考を象徴しており、書きやすいです
• 1. お母さんは服と靴を履いて外出します
• 2. お母さんは服と靴を履いて外出します電動スクーターに乗る
• 3. ママはスーパーに行き、スクーターを置きます
• 4. ママはスイカを買います
• 5. ママはチェックアウトします
• 6. ママは電動スクーターに乗って家に帰ります
• 7. あなたが家に帰ると、子供はスイカを食べます

オブジェクト指向プログラミング言語は、プロセスではなくオブジェクトに焦点を当てます。オブジェクト指向ではすべてがオブジェクトです •上記の方法は、子供の母親が問題を解決するために子供たちがメロンを買うために使用できます
• オブジェクト指向プログラミングの考え方は、すべての関数を対応するオブジェクトに保存することです。特定の関数を使用したい場合は、対応するオブジェクトを見つけるだけです。オブジェクトを直接記述する
• このコーディング方法は読みやすく、保守と再利用が簡単です。ただし、記述プロセスは従来の考え方に従わず、書くのは比較的面倒です

  • オブジェクト指向の基本的な特徴
    クラス: 同じプロパティとメソッドを持つオブジェクトのコレクションを記述するために使用されます。コレクション内のすべてのオブジェクトに共通のプロパティとメソッドを定義します。オブジェクトはクラスのインスタンスです。
  • クラス変数: クラス変数は、インスタンス化されたオブジェクト全体でパブリックです。クラス変数は、クラス内および関数本体の外で定義されます。クラス変数は通常、インスタンス変数としては使用されません。
  • データ属性: クラス変数またはインスタンス変数。クラスとそのインスタンス オブジェクトに関連するデータを処理するために使用されます。
  • メソッドの書き換え: 親クラスから継承したメソッドがサブクラスのニーズを満たせない場合は、メソッドを書き換えることができます。このプロセスはメソッド オーバーライドと呼ばれ、メソッドの書き換えとも呼ばれます。
  • ローカル変数: メソッドで定義された変数は、現在のインスタンスのクラスにのみ作用します。
  • インスタンス変数: クラスの宣言では、属性は変数によって表されます。このような変数はインスタンス変数と呼ばれ、クラス宣言の内部で、クラスの他のメンバー メソッドの外部で宣言されます。
  • 継承: つまり、派生クラスは基本クラスのフィールドとメソッドを継承します。継承により、派生クラスのオブジェクトを基本クラス オブジェクトとして扱うこともできます。たとえば、次のような設計があります。Dog タイプのオブジェクトは、「is-a」関係 (たとえば、Dog is an Animal) をシミュレートする Animal クラスから派生します。
  • インスタンス化: クラスのインスタンス、クラスの特定のオブジェクトを作成します。
  • オブジェクト: クラスを通じて定義されたデータ構造インスタンス。オブジェクトには 2 つのデータ メンバー (クラス変数とインスタンス変数) とメソッドが含まれます。
オブジェクト指向プログラミング (OOP) プログラミングの考え方は、主に大規模ソフトウェア向けに設計されています。オブジェクト指向プログラミングは、データの操作に関連するデータとメソッドをオブジェクトにカプセル化し、人間の思考に近い方法でコードとデータを編成することで、プログラムのスケーラビリティと可読性を高め、プログラミング効率を大幅に向上させます。


Python はオブジェクト指向の考え方を完全に採用しており、真のオブジェクト指向プログラミング言語であり、継承、ポリモーフィズム、カプセル化などの基本的なオブジェクト指向機能を完全にサポートしています。
Python では、すべてがオブジェクトです。たとえば、データ型、関数などはすべてオブジェクトです。

  • Python は、プロセス指向、オブジェクト指向、関数型プログラミングなどの複数のプログラミング パラダイムをサポートしています。オブジェクト指向とプロセス指向の違い:

類似点: どちらも問題解決についての考え方とコードの編成方法です
違い:
手順指向の考え方: プロセス指向プログラミングは、「プログラムの論理的な流れ」にもっと注意を払い、一種の「実行者」です。 " "考えて、小規模なプログラムを書くのに適しています。
オブジェクト指向 (オブジェクト指向) の考え方: オブジェクト指向では、「ソフトウェア内のオブジェクト間の関係」により多くの注意が払われており、これは人間の思考様式により一致しています。 「デザイナーの思考は大規模なプログラムを書くのに適している。」オブジェクト指向は、システム全体をマクロな視点から把握し、分析するのに役立ちます。
ただし、実装部分 (つまり、各メソッド) に固有のマイクロ操作は、依然としてプロセス指向のアプローチで処理する必要があります。プロセス指向とオブジェクト指向は相互に補完し合うものであり、オブジェクト指向をプロセス指向から分離することはできません。
オブジェクト指向の思考方法 複雑な問題に遭遇したときは、まず問題から名詞を探し (プロセス指向の場合は動詞を探します)、次にこれらの名詞のどれがクラスとして使用できるかを判断します。次に、問題のニーズに応じてクラスの属性とメソッドを決定し、クラス間の関係を決定します。

2.クラス

  • クラスの作成
  • 私たちは現在、Python の組み込みオブジェクトを学習していますが、すべての組み込みオブジェクトがニーズを満たすことができるわけではないため、開発中に一部のオブジェクトをカスタマイズする必要があることがよくあります。
  • リスト項目クラスは、単純に図面と同等であると理解されます。 , プログラムの概要では、クラスに基づいてオブジェクトを作成する必要があります。
    クラスはオブジェクトの描画です。
  • オブジェクトをクラスのインスタンスとも呼びます。
  • 複数のオブジェクトがクラスを通じて作成される場合、これらのオブジェクトをオブジェクトのクラスと呼びます。
  • クラスはオブジェクトでもあります。クラスは、オブジェクトの作成に使用されるオブジェクトです。
  • オブジェクトに変数を追加できます。オブジェクト内の変数は属性と呼ばれます。構文: object。属性名 = 属性値
class MyClass():
    pass

クラスは抽象クラスであり、「オブジェクト テンプレート」とも呼ばれます。クラス テンプレートを通じてクラスのインスタンス オブジェクトを作成する必要があります。そうすれば、クラスによって定義された関数を使用できるようになります。
Python では、Python オブジェクトにはいくつかの部分が含まれています:

Python のオブジェクト指向の中核基盤について説明する

  • オブジェクトのインスタンス化
mc = MyClass()mc1 = MyClass()mc2 = MyClass()mc3 = MyClass()

したがって、コンストラクター init() メソッドを定義する必要があります。このメソッドは、定義したオブジェクトにオブジェクトのプロパティを割り当てます。コンストラクター メソッドは、「インスタンス オブジェクトの初期化」を実行するために使用されます。つまり、オブジェクトの作成後、現在のオブジェクトの関連プロパティが初期化され、戻り値はありません。

init() 重要なポイントは次のとおりです:

名前は固定されており、次のようにする必要があります: init()
最初のパラメータは固定されており、次のようにする必要があります。 :自分自身。 self は、作成したばかりのインスタンス オブジェクトを参照します。
コンストラクターは、通常、インスタンス オブジェクトのインスタンス属性を初期化するために使用されます。たとえば、例 1 では、インスタンス属性: 名前とサウンドが初期化されます。
コンストラクターは、「クラス名 (パラメーター リスト)」を通じて呼び出されます。 」。呼び出し後、作成されたオブジェクトは対応する変数に返されます。例: cat = Animal('Little Flower','Meow Meow')
__init __() メソッド: 作成したオブジェクトを初期化します。初期化とは、「インスタンス属性に値を割り当てる」ことを指します。
__new __( ) メソッド: オブジェクトの作成に使用されますが、通常はこのメソッドを再定義する必要はありません。
__init__ メソッドを定義しない場合、システムはデフォルトの __init__ メソッドを提供します。パラメーターを使用して __init__ メソッドを定義すると、システムはデフォルトの __init__ メソッドを作成しません。
注:
Python の Self は、C の self ポインター、JAVA および C# の this キーワードに相当します。 Python では、self はコンストラクターの最初のパラメーターである必要があり、名前は任意に変更できます。ただし、通常は慣例に従い、それを self と呼びます。
3. クラスの定義

• クラスとオブジェクトは現実の物事を抽象化したものです
• 物事には 2 つの部分が含まれます
• 1. データ (属性)
• 2. 動作 (メソッド)
• メソッド呼び出し object.メソッド名 ()
• コンビニエンス コールと関数呼び出しの違い: 関数呼び出しの場合、関数呼び出しの場合、いくつかの仮パラメータがあります。を呼び出すと、いくつかの実パラメータが渡されます。メソッド呼び出しの場合、デフォルトで 1 つのパラメータが渡されるため、メソッドには少なくとも 1 つの仮パラメータが必要です
• クラス コード ブロックで変数と関数を定義できます
• 変数はパブリック プロパティになりますクラスインスタンスのすべて このクラスのすべてのインスタンスは object.プロパティ名 の形式でアクセスできます
• 関数はこのクラスインスタンスのパブリックメソッドとなり、このクラスのすべてのインスタンスは の形式でアクセスできますobject.method 名

#
class Person():
    name = '奥特曼'
    def speak(w):
        print('我能说话')a = Person()b = Person()a.name = '葫芦娃'print(a.name)print(b.name)print(a.speak())print(b.speak())

4 のパラメータ self

  • 属性和方法

• 类中定义的属性和方法都是公共的,任何该类实例都可以访问
• 属性和方法的查找流程
• 当我们调用一个对象的属性时,解析器会现在当前的对象中寻找是否还有该属性,如果有,则直接返回当前的对象的属性值。如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值。如果没有就报错
• 类对象和实例对象中都可以保存属性(方法)
• 如果这个属性(方法)是所以的实例共享的,则应该将其保存到类对象中
• 如果这个属性(方法)是摸个实例独有的。则应该保存到实例对象中
• 一般情况下,属性保存到实例对象中 而方法需要保存到类对象中

  • self

方法是从属于实例对象的方法。实例方法的定义格式如下:
 
    def 方法名(self ,[形参列表]):
      函数体

方法的调用格式如下:
    对象.方法名([实参列表]) 要点:

定义实例方法时,第一个参数必须为 self。和前面一样,self 指当前的实例对象。 调用实例方法时,不需要也不能给 self
传参。self 由解释器自动传参 函数和方法的区别

都是用来完成一个功能的语句块,本质一样。 方法调用时,通过对象来调用。方法从属于特定实例对象,普通函数没有这个特点。
直观上看,方法定义时需要传递 self,函数不需要。 实例对象的方法调用本质: alt

类中其他操作:

dir(obj)可以获得对象的所有属性、方法 obj.dict 对象的属性字典 pass 空语句,相当于占位符。
isinstance(对象,类型) 判断“对象”是不是“指定类型”。

class Person():

    def speak(self):
        print('你好我是%s' % self.name)

    def read(self):
        passa = Person()b = Person()a.name = '葫芦娃'b.name = '奥特曼'a.speak()b.speak()结果:
C:\Users\giser\AppData\Local\Programs\Python\Python37\python.exe D:/pycharm/pythonbasic/day09.py
你好我是葫芦娃
你好我是奥特曼

Process finished with exit code 0

                 

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

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。