Python オブジェクト指向プログラミング:クラス、オブジェクト、継承、コンストラクタ

⚡ スマートサマリー

オブジェクト指向プログラミング Python クラスとオブジェクトを中心にコードを整理し、関連するデータと動作をまとめます。このアプローチでは、クラスの定義方法、オブジェクトの作成方法、継承の適用方法、コンストラクタによる属性の初期化方法を示します。

  • 🔘 授業計画: クラスは、関連するデータとメソッドをグループ化し、オブジェクトを作成するための再利用可能な設計図として機能します。
  • ☑️ オブジェクト: オブジェクトはクラスのインスタンスであり、それぞれが独自の属性値を格納します。
  • ✅ クラスの定義: class キーワード、インデントされたメソッド、および self パラメータは、 Python とに提供されます。
  • 🧬 継承: 派生クラスは基底クラスから属性とメソッドを継承し、多重継承をサポートします。
  • 🛠️ コンストラクター: __init__() メソッドは、定義済みの値を使用して各新規オブジェクトを初期化します。
  • 🤖 AIとの関連性: Pyなどの機械学習ライブラリTorch モデル層とネットワークとして Python クラス。

Python オブジェクト指向プログラミング:クラス、オブジェクト、継承、コンストラクタ

OOPsの Python

OOPsの Python 他の一般的なプログラミング言語と同じように、オブジェクトとクラスの使用に重点を置いたプログラミング手法です。オブジェクトは、現実世界のあらゆるエンティティにすることができます。 Python 開発者は、コードの再利用性を重視したOOPアプローチを使用してアプリケーションを開発できます。クラスとオブジェクトを作成するのは非常に簡単です。 Python.

クラスとは何ですか?

クラス Python 論理的なグループping データと関数に関するものです。これにより、任意のコンテンツを含むデータ構造を自由に作成でき、容易にアクセスできるようになります。

例えば、オンラインで顧客の詳細を取得したい銀行員は、 顧客クラスそこには、取引の詳細、入出金の詳細、未払い債務など、そのすべての属性が一覧表示されます。

定義方法 Python クラス

クラスを定義するには、以下の点を考慮する必要があります。

ステップ1) In Pythonクラスは、 "クラス" キーワード

class myClass():

ステップ2) クラス内で、このクラスの一部である関数またはメソッドを定義できます。

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • ここでは、次のような内容を出力するメソッド1を定義しました。Guru99。 "
  • 私たちが定義したもう 2 つのメソッドは、「Software Testing」+ SomeString を出力するメソッド XNUMX です。 SomeString は呼び出しメソッドによって提供される変数です。

ステップ3) 関数、ループ、if ステートメントなどのコードと同様に、クラス内のすべてのものはインデントされます。インデントされていないものはクラス内にありません。

定義する Python クラス

ご注意: 「self」の使い方について Python

  • self引数はオブジェクト自体を指します。そのため、selfという単語が使われています。したがって、このメソッド内では、selfは操作対象のオブジェクトの特定のインスタンスを指します。
  • 慣例により、Selfは Pythonインスタンスメソッドの最初のパラメータを示す Python。 それは、 Python オブジェクトのメンバーにアクセスするための構文

ステップ4) クラスのオブジェクトを作成するには

c = myClass()

ステップ5) クラス内のメソッドを呼び出すには

c.method1()
    c.method2(" Testing is fun")
  • メソッド1またはメソッド2を呼び出す際に、selfキーワードを指定する必要がないことに注意してください。これは自動的に処理されます。 Python ランタイム。
  • Python インスタンスメソッドを呼び出すと、意図的に提供したかどうかに関係なく、ランタイムは「self」値を渡します。
  • 非自己引数に注意する必要があるだけです

ステップ6) これが完全なコードです

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  def method2(self,someString):    
      print("Software Testing:" + someString)
  
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()

継承の仕組み

継承はオブジェクト指向プログラミングで使用される機能です。 これは、既存のクラスをほとんどまたはまったく変更せずに新しいクラスを定義することを指します。 新しいクラスは次のように呼ばれます 派生クラス そしてそれが継承するものから、 ベース. Python 継承をサポートし、また 多重継承。 クラスは、サブクラスまたは継承クラスと呼ばれる別のクラスから属性と動作メソッドを継承できます。

継承の仕組み Python

Python 継承構文

class DerivedClass(BaseClass):
    body_of_derived_class

ステップ1) 次のコードを実行します

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print ("childClass Method1")
        
  def method2(self):
        print("childClass method2")     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

childClass では method1 は定義されていませんが、親クラスの myClass から派生していることに注意してください。出力は「Guru99。 "

ステップ2) 行番号 8 と 10 のコメントを解除します。コードを実行します。

これで、メソッド 1 が childClass に定義され、出力「childClass Method1」が正しく表示されます。

ステップ3) 行番号 9 のコメントを解除します。 コードを実行する

次の構文を使用して親クラスのメソッドを呼び出すことができます。

ParentClassName.MethodName(self)

私たちの場合、myClass.method1(self) を呼び出し、 Guru99は予想通りに印刷されています

ステップ 4) 行番号 19 のコメントを解除します。 コードを実行します。

子クラスのメソッド 2 が呼び出され、期待どおり「childClass method2」が出力されます。

Python コンストラクター

コンストラクターは、オブジェクトを事前定義された値にインスタンス化するクラス関数です。

二重アンダースコア(_)で始まります。__init__() メソッド

以下の例では、コンストラクターを使用してユーザーの名前を取得しています。

class User:
    name = ""

    def __init__(self, name):
        self.name = name

    def sayHello(self):
        print("Welcome to Guru99, " + self.name)

User1 = User("Alex")
User1.sayHello()

出力は次のようになります。

ようこそ! Guru99、アレックス

Python 2例

上記のコードは Python 3つの例、実行したい場合 Python 2 次のコードを検討してください。

# How to define Python classes
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
  def method2(self,someString):    
      print "Software Testing:" + someString
      
   
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()


#How Inheritance works
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
      
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print "childClass Method1" 
        
  def method2(self):
        print "childClass method2"     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

次のチュートリアルについて学習してください ポリモーフィズム Python

よくあるご質問

クラスは属性とメソッドを定義する設計図であり、オブジェクトはそのクラスから構築された具体的なインスタンスです。1 つのクラスは多くのオブジェクトを作成できます。ping 独自のデータ。

Python オブジェクト指向プログラミングは、カプセル化(データとメソッドのバンドル)、絶対的、論理trac(複雑さを隠蔽する)最適化、(基底クラスの再利用)、およびポリモーフィズム(1つのインターフェースで多くの形態が可能)。

クラス変数はクラス本体内で宣言され、すべてのインスタンスで共有されます。インスタンス変数は__init__メソッド内でselfを使用して割り当てられ、単一のオブジェクトにのみ属します。

`super()` 関数は親クラスへのプロキシを返すため、子クラスは親クラスのメソッドやコンストラクタを直接指定することなく呼び出すことができます。継承属性を初期化するために、`super().__init__()` のように記述されることがよくあります。

カプセル化は、オブジェクトの内部データへの直接アクセスを制限します。 Python保護対象属性の場合は、属性の前にアンダースコアを1つ付けます(_name)。名前のマングリングの場合は、アンダースコアを2つ付けます(__name)。

はい。 A Python クラスは、クラス Child(A, B) のように、複数の親から継承することができます。 Python mro() メソッドで検査されるメソッド解決順序 (MRO) を使用して、重複するメソッド名を解決します。

オブジェクト指向プログラミングは、AIおよび機械学習フレームワークの中核を成す。PyなどのライブラリTorchとscikit-learnは、ネットワーク、レイヤー、推定器をクラスとしてモデル化するため、それらをサブクラス化して再利用することでモデルを構築できます。

はい。GitHub CopilotとAIアシスタントは Python クラス、コンストラクタ、継承を簡単なプロンプトから生成します。これらは繰り返し発生する定型コードを自動化しますが、出力結果のロジックが正しいかどうかを確認する必要があります。