Pythonのクラスとオブジェクト[例付き]

公開: 2021-06-25

OOP –オブジェクト指向プログラミングの略–は、関数型プログラムを作成するためにオブジェクトとクラスに依存するパラダイムです。 OOPはコードのモジュール性に取り組み、クラスとオブジェクトは、より大きなソフトウェア機能とモジュールを作成するために使用できる、再利用可能な単純なコードの記述に役立ちます。 C ++、Java、およびPythonは、最も一般的に使用される3つのオブジェクト指向プログラミング言語です。 ただし、データサイエンスや統計分析などの今日のユースケースに関しては、Pythonは他の2つよりも優れています。

世界中のデータサイエンティストがPythonプログラミング言語の機能を誓うので、これは当然のことです。 データサイエンスでのキャリアを開始することを計画していて、Pythonをマスターしようとしている場合は、クラスとオブジェクトについて知ることが最優先事項である必要があります。

この記事では、Pythonのオブジェクトとクラスの背後にあるすべてのニュアンスを理解し、独自のクラスの作成と操作を開始する方法を説明します。

目次

Pythonのクラス

Pythonのクラスは、オブジェクトの作成に使用するユーザー定義のプロトタイプです。 簡単に言うと、クラスはデータ機能をバンドルするためのメソッドです 2つのキーワードに注意することが重要です。 データとは、インスタンス化または定義された変数を意味しますが、機能とは、そのデータに対して実行できるすべての操作を意味します。 1つのパッケージにバンドルされたデータと機能とともに、クラスを取得します。

クラスを作成する必要性を理解するために、次の簡単な例を検討してください。 年齢、品種、色、体重などのさまざまな特性を持つ近所の猫を追跡したいとします。リストを使用して要素を1:1で追跡できます。つまり、品種を追跡できます。年齢、またはリストを使用した体重に対する年齢。 100匹の猫がいるとしたらどうでしょうか。 追加するプロパティが他にもある場合はどうなりますか? このようなシナリオでは、リストの使用は整理されておらず、面倒な傾向があります。

それがまさにクラスの出番です!

クラスは、独自のデータメンバー(変数)とメンバー関数を持つユーザー定義のデータ構造を作成するのに役立ちます。 これらの変数とメソッドにアクセスするには、クラスのオブジェクトを作成するだけです(これについては後で詳しく説明します)。 つまり、ある意味で、クラスはオブジェクトの青写真のようなものです。

さらに、クラスを作成すると、新しいタイプのオブジェクトが自動的に作成されます。これにより、同じタイプのオブジェクトをさらに作成できます。 各クラスインスタンスには、その状態を維持するために属性を付加できます。 クラスインスタンス自体に、状態を変更するためのメソッド(クラスで定義されている)を含めることができます。

Pythonクラスに関するいくつかのポイント:

  • クラスは、キーワードclassを使用して作成されます。
  • 属性は、作成したクラスに固有の変数です。
  • これらの属性は本質的に常にパブリックであり、クラス名の後にドット演算子を使用してアクセスできます。 たとえば、 ClassName.AttributeNameは、その特定のクラスの特定の属性の詳細を取得します。

クラスを定義するための構文:

クラスClassName:

#ステートメント-1

#ステートメント-N

例えば:

クラス猫:

合格

上記の例では、classキーワードは、クラスの名前(この場合はCat)が後に続くクラスを作成していることを示しています。 このクラスの役割はまだ定義されていません。

Pythonでクラスを使用する利点

  • クラスは、さまざまな種類のデータをすべて1か所に適切に整理するのに役立ちます。 このようにして、コードをクリーンでモジュール式に保ち、コードの可読性を向上させます。
  • クラスを使用すると、継承と呼ばれる別のOOPパラダイムを利用できます。 これは、クラスが別のクラスのプロパティを継承する場合です。
  • クラスを使用すると、標準の演算子をオーバーライドできます。
  • クラスはコードを再利用可能にし、プログラムをより効率的にします。

Pythonのオブジェクト

オブジェクトは、定義したクラスのインスタンスにすぎません。 クラスを作成した瞬間に、自動インスタンスがすでに作成されています。 したがって、例のように、Catクラスは、ペルシャの品種で3歳の実際の猫のようなオブジェクトを自動的にインスタンス化します。 さまざまなプロパティを持つ猫のさまざまなインスタンスを持つことができますが、それが理にかなっているためには、ガイドとしてクラスが必要になります。 そうしないと、必要な情報がわからず、迷子になってしまいます。

オブジェクトは、大きく3つの特徴があります。

  • 状態:これは、オブジェクトのさまざまな属性と、オブジェクトが表示できるさまざまなプロパティを指します。
  • 動作:これは基本的にそのオブジェクトのメソッドを示します。 また、この特定のオブジェクトが他のオブジェクトとどのように相互作用または応答するかを反映します。
  • ID:IDは、必要に応じて呼び出すことができるオブジェクトの一意の名前です。

1.オブジェクトの宣言

オブジェクトの宣言は、クラスのインスタンス化とも呼ばれます。これは、クラスを定義するとすぐに、そのクラスのインスタンスであるデフォルトのオブジェクトがそれ自体で作成されるためです。 同様に、オブジェクトを作成するたびに、基本的にクラスの新しいインスタンスを作成します。

前述の3つのこと(状態、動作、アイデンティティ)に関しては、すべてのインスタンス(オブジェクト)が動作と状態を共有しますが、それらのアイデンティティは異なります。 プログラマーの要求に応じて、1つのクラスに任意の数のオブジェクトを含めることができます。

以下の例を確認してください。 これは、クラスをインスタンス化する方法を説明するプログラムです。

クラス猫:

#簡単なクラス

# 属性

attr1=「猫」

attr2 =“ cat”

#サンプルメソッド

def fun(self):

print(“ I'm a”、self.attr1)

print(“ I'm a”、self.attr2)

#ドライバーコード

#オブジェクトのインスタンス化

トム=猫()

#クラス属性へのアクセス

#オブジェクトを介したメソッド

print(Tom.attr1)

Tom.fun();

この単純なプログラムの出力は次のようになります。

私は猫です

私は猫です

ご覧のとおり、最初にcatというクラスを作成し、次に「Tom」という名前のオブジェクトをインスタンス化しました。 得られた3つの出力は次のとおりです。

  • 猫–これはステートメントprint(Tom.attr1)の結果でした。 TomはCatクラスのオブジェクトであり、attr1はFelineとして設定されているため、この関数は出力Felineを返します。
  • 私は猫です– Tom.fun(); Tomというオブジェクトを使用して、「fun」と呼ばれるcatクラスの関数を呼び出します。 Tomオブジェクトは関数の属性を持っているため、関数は次の2つの文を出力します–「私は猫です」。
  • 私は猫です–上記と同じ理由です。

Pythonでクラスとオブジェクトがどのように機能するかを理解したところで、いくつかの重要なメソッドを見てみましょう。

2.セルフメソッド

任意のクラスで定義されているすべてのメソッドは、関数定義に追加の最初のパラメーターを持っている必要があります。 このパラメーターには、プログラマーによって値が割り当てられていません。 ただし、メソッドが呼び出されると、Pythonはメソッドに値を提供します。

その結果、引数なしで関数を定義した場合でも、技術的には1つの引数があります。 これは、Pythonでは「自己」と呼ばれます。 これをよりよく理解するために、C ++でポインターの概念を改訂するか、Javaでそれらを参照することができます。 selfメソッドは基本的に同じように機能します。

これをよりよく理解するには、たとえば、オブジェクトのメソッドを呼び出す場合、次のようにします。

myObject.myMethod(arg1、arg2)、Pythonは自動的にそれをmyClass.myMethod(myObject、arg1、arg2)に変換します。

ご覧のとおり、オブジェクト自体がメソッドの最初の引数になります。 これがPythonの自己です。

3.__init__メソッド

このメソッドは、JavaまたはC++のコンストラクターに似ています。 コンストラクターと同様に、initメソッドはオブジェクトの状態を初期化するために使用されます。 これには、オブジェクトの作成時に実行される命令(ステートメント)のコレクションが含まれます。 オブジェクトがクラスに対してインスタンス化されると、initメソッドはユーザーが初期化したメソッドを自動的に実行します。

これをよりよく説明するためのコードの一部を次に示します。

#initメソッドを使用したサンプルクラス

クラス人:

#initメソッドまたはコンストラクター

def __init __(self、name):

self.name = name

#サンプルメソッド

def say_hi(self):

print('こんにちは、私の名前は'、self.name)

p = Person(“ Sam”)

p.say_hi()

出力:

こんにちは、私の名前はサムです

世界のトップ大学からオンラインでデータ分析コースを学びましょうエグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

クラス変数とインスタンス変数

インスタンス変数は各インスタンスに固有ですが、クラス変数はクラスのすべてのインスタンスで共有されるメソッドと属性用です。 したがって、インスタンス変数は基本的に、コンストラクターまたは自己を持つメソッド内で値が割り当てられる変数です。 一方、クラス変数は、クラス内で値が割り当てられている変数です。

次のコードを実行して、コンストラクター(initメソッド)を使用してインスタンス変数がどのように定義されているかを理解してください。

クラス猫:

#クラス変数

動物='猫'

#initメソッドまたはコンストラクター

def __init __(self、breed、color):

# インスタンス変数

self.breed=品種

self.color = color

#Dogクラスのオブジェクト

トム=猫(「ペルシャ」、「黒」)

Snowy = cat(“ Indie”、“ white”)

print( "トムの詳細:')

print('Tom is a'、Tom.animal)

print('Breed:'、Tom.breed)

print('Color:'、Tom.color)

print('\ n雪の詳細:')

print(“ Snowy is a'、Snowy.animal)

print('Breed:'、Snowy.breed)

print('Color:'、Snowy.color)

上記のコードを1行ずつ実行すると、次のような出力が得られます。

出力:

トムの詳細:

トムは猫です

品種:ペルシア語

カラー:ブラック

雪に覆われた詳細:

スノーウィーは猫です

品種:インディー

色:白

結論は

Pythonは、特に初心者にとって、比較的簡単なプログラミング言語です。 基本をマスターすると、さまざまなPythonライブラリを操作して、データ固有の問題を解決する準備が整います。 ただし、旅はクラスとオブジェクトを理解することから始まりますが、さまざまなオブジェクト、クラス、およびそれらのニュアンスを操作する方法も学ぶ必要があることを忘れないでください。

この記事が、Pythonのクラスとオブジェクトに関する疑問を明らかにするのに役立つことを願っています。 ご不明な点がございましたら、下にコメントをお寄せください。まもなくご連絡いたします。

あなたが転職を探していて、専門家の助けを求めているなら–upGradはあなたのためにここにあります。 IIIT-Bと共同で提供されるデータサイエンスエグゼクティブPGプログラムをご覧ください。 14以上のプログラミング言語とツール(Pythonを含む)に精通すると同時に、30を超える業界関連のプロジェクトにアクセスできます。 学士号で最低50%のスコアを獲得した場合、どのストリームの学生もこのプログラムに登録できます。

確かな85か国以上の学習者ベース、世界中で40,000人以上の有給学習者、50万人以上の幸せな働く専門家がいます。 私たちの360度のキャリア支援は、グローバルな学生との勉強とブレインストーミングの露出と組み合わせて、あなたがあなたの学習経験を最大限に活用することを可能にします。

Pythonのクラスとオブジェクトとは何ですか?

クラスは、エンティティのプロパティと機能をバインドするテンプレートまたはブループリントです。 Pythonでは、キーワードclassを使用してクラスを定義します。 同様の属性を持つすべてのエンティティまたはオブジェクトを単一のクラスに配置し、メンバー関数からアクセスできます。
オブジェクトはクラスのインスタンスです。 クラスが作成されると、オブジェクトはそのクラスのすべての情報を取得します。 これは、実際の値を持つ、尊重されたクラスのコピーのようなものです。 オブジェクトは、次の3つの要素によって分類されます。
a。
b。 行動
c。 身元

Pythonはどのプログラミングパラダイムに従いますか?

4つの主要な識別可能なパラダイムがあり、その後にPythonオブジェクト指向、手続き型、機能型、および命令型が続きます。 Pythonはオブジェクト指向の概念を強力にサポートしています。 ただし、これは純粋にオブジェクト指向のプログラミング言語ではありません。
さまざまなプログラミングパラダイムをサポートする理由は、CoffeeScriptのようなスクリプトやRubyのようなオブジェクト指向プログラミング言語の影響を顕著に受けるためです。 また、Rなどの言語と組み合わせて、効率と計算能力を向上させます。
マルチパラダイム言語であるPythonは、最も用途の広い言語の1つであると考えられています。 これは、開発、データ分析、Webスクレイピング、および自動化に広く使用されています。

Pythonのアクセス修飾子とは何ですか?

他のオブジェクト指向プログラミング言語と同様に、Pythonのクラスにも3つのアクセス修飾子があります。
a。 パブリックアクセス修飾子:パブリックとして指定されたクラスメンバーは、任意の関数、つまりメンバー関数と非メンバー関数から直接アクセスできます。 アクセス指定子が指定されていない場合、コンパイラーはすべてのクラスメンバーをデフォルトでパブリックメンバーと見なします。
b。 プライベートアクセス修飾子:これらのクラスメンバーは、他のクラスメンバーから隠されています。 それらは、それらが定義されているクラスのメンバー関数によってのみアクセスできます。
c。 Protected Access Modifier :保護されていると指定されたクラスメンバーは、同じクラスのメンバー関数からのみアクセスでき、クラスの外部にアクセスしようとするとエラーがスローされます。 プライベートアクセス指定子と保護されたアクセス指定子の唯一の大きな違いは、保護されたメンバーは継承できますが、プライベートメンバーは継承できないことです。