Python OOP: クラス、オブジェクト、継承、コンストラクターと例

Python の OOP

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

クラスとは何ですか?

Python のクラスは、データと関数を論理的にグループ化したものです。 任意のコンテンツを含むデータ構造を自由に作成できるため、簡単にアクセスできます。

たとえば、顧客情報を取得したい銀行員の場合、tails オンラインでは次の場所に行きます 顧客クラス、トランザクションのようなすべての属性tails、出金と入金tails、未払いの借金などがリストアップされるでしょう。

Python クラスを定義する方法

クラスを定義するには、次のことを考慮する必要がありますwing ポイント

ステップ1) Python では、クラスは次のように定義されます。 "クラス" キーワード

class myClass():

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

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

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

Python クラスを定義する

注意: Python での「self」の使用について

  • 自己主張はオブジェクト自体を指します。 したがって、selfという言葉が使用されます。 したがって、このメソッド内では、 self は操作対象のこのオブジェクトの特定のインスタンスを参照します。
  • Self は、Python のインスタンス メソッドの最初のパラメーターを示すために、Python の慣例により好まれている名前です。 オブジェクトのメンバーにアクセスするための Python 構文の一部です。

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

c = myClass()

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

c.method1()
    c.method2(" Testing is fun")
  • Method1 または Method2 を呼び出すときに、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) 以下を実行してくださいwing コード

# 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 コンストラクター

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

それはで始まります double アンダースコア (_)。 __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 で実行したい場合は、以下を検討してください。wing コー​​ド。

# 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のポリモーフィズム

まとめ

「クラス」とは、関数とデータを論理的にグループ化したものです。 Python クラスは、オブジェクト指向プログラミングのすべての標準機能を提供します。

  • クラス継承メカニズム
  • 基本クラスのメソッドをオーバーライドする派生クラス
  • メソッドは同じ名前の基本クラスのメソッドを呼び出すことができます
  • Python クラスはキーワードによって定義されます "クラス" 自体
  • クラス内では、クラスの一部である関数またはメソッドを定義できます。
  • 関数、ループ、if ステートメントなどのコードと同様に、クラス内のすべてがインデントされます。
  • Python の self 引数はオブジェクト自体を参照します。 Self は、Python のインスタンス メソッドの最初のパラメータを示すために、Python の慣例により好まれている名前です。
  • Python ランタイムは、インスタンス内でインスタンス メソッドを呼び出すと、意図的に指定したかどうかに関係なく、自動的に「self」値を渡します。
  • Python では、クラスはサブクラスまたは継承クラスと呼ばれる別のクラスから属性と動作メソッドを継承できます。