Pythonのインスタンスメソッドと静的メソッドとクラスメソッド:重要な違​​い

Pythonのインスタンスメソッドと静的メソッドとクラスメソッド:重要な違​​い

オブジェクト指向プログラミング(OOP)に入ると、Pythonメソッドは混乱することがよくあります。このガイドでは、Pythonの3つの主要なタイプのメソッドについて説明します。





Pythonの3種類のメソッド

Pythonには3つのタイプのメソッドがあります。 インスタンスメソッド静的メソッド 、 と クラスメソッド





基本的なPythonスクリプトをコーディングするために、違いを知ることは必ずしも必要ではありませんが、OOPに進むと、違いが大きな変化をもたらす可能性があります。





Pythonを初めて使用する場合、または何もインストールせずに実験したい場合は、必ずこれらにアクセスしてください。 オンラインインタラクティブPythonシェル

始める前に:デコレータパターンを理解する

違いを確認する前に、次のようなデザインパターンを理解することが重要です。 デコレータパターン 、または単に デコレータ



デコレータは複雑に聞こえますが、恐れることは何もありません。デコレータは単なる関数です。それらを自分で作成することも、ライブラリまたはPython標準ライブラリに含まれているものを使用することもできます。

他の関数と同様に、デコレータはタスクを実行します。ここでの違いは、デコレータがロジックを適用したり、他の関数の動作を変更したりすることです。これらはコードを再利用するための優れた方法であり、ロジックを個々の懸念事項に分離するのに役立ちます。





デコレータパターンは、静的メソッドまたはクラスメソッドを定義するPythonの推奨される方法です。 Pythonでは次のようになります。

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

デコレータは、関数またはクラス宣言の直前に置く必要があります。彼らはで始まります @ 符号を付けます。通常のメソッドとは異なり、引数を渡さない限り、末尾に括弧を付ける必要はありません。





複数のデコレータを組み合わせて独自に記述し、それらをクラスに適用することも可能ですが、これらの例ではそのいずれも行う必要はありません。

Windows7が10よりも優れている理由

Pythonのインスタンスメソッド

インスタンスメソッドは、Pythonクラスで最も一般的なタイプのメソッドです。これらは、インスタンスの一意のデータにアクセスできるため、このように呼ばれます。車のクラスからそれぞれ作成された2つのオブジェクトがある場合、それらはそれぞれ異なるプロパティを持っている可能性があります。色、エンジンサイズ、シートなどが異なる場合があります。

インスタンスメソッドには 自己 パラメータとして使用しますが、毎回これを渡す必要はありません。自己はPythonのもう1つの特別な用語です。インスタンスメソッド内では、selfを使用して、クラスに存在する可能性のあるデータまたはメソッドにアクセスできます。あなたは自分自身を経由せずにそれらにアクセスすることはできません。

最後に、インスタンスメソッドが最も一般的であるため、デコレータは必要ありません。作成するメソッドは、Pythonに特に指示しない限り、インスタンスメソッドとして自動的に作成されます。

次に例を示します。

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

NS 名前 変数はからアクセスされます 自己 。いつ example_function が呼び出された場合、自己を渡す必要はありません--- Pythonがこれを行います。

Pythonの静的メソッド

静的メソッドは、何らかの方法でクラスに関連するメソッドですが、クラス固有のデータにアクセスする必要はありません。使用する必要はありません 自己 、インスタンスをインスタンス化する必要すらありません。メソッドを呼び出すだけです。

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

NS @staticmethod デコレータは、このメソッドが静的メソッドであることをPythonに伝えるために使用されました。

静的メソッドは、タスクを分離して実行するユーティリティ関数に最適です。クラスデータにアクセスする必要はありません(アクセスできません)。それらは完全に自己完結型であり、引数として渡されたデータでのみ機能する必要があります。静的メソッドを使用して、2つの数値を加算したり、特定の文字列を出力したりできます。

Pythonのクラスメソッド

クラスメソッドは、知っておくべき3番目で最後のOOPメソッドタイプです。クラスメソッドはクラスについて知っています。特定のインスタンスデータにアクセスすることはできませんが、他の静的メソッドを呼び出すことはできます。

クラスメソッドは必要ありません 自己 引数として、しかしそれらは呼ばれるパラメータを必要とします cls 。これはの略です クラス 、およびselfと同様に、Pythonによって自動的に渡されます。

クラスメソッドは、 @classmethod デコレータ。

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

クラスメソッドは、おそらく3つのメソッドタイプの中でより紛らわしいものですが、それらには用途があります。クラスメソッドはクラス自体を操作できます。これは、より大規模で複雑なプロジェクトで作業している場合に役立ちます。

各メソッドタイプを使用する場合

Pythonのメソッドのタイプから選択するのは困難で困難な決定のように思えるかもしれませんが、少し練習すればすぐにコツをつかむことができます。

BluetoothヘッドフォンをXboxに接続する方法

楽しみのために小さなスクリプトを書くだけでも、Pythonの別のOOP機能を学ぶことは知っておくとよいスキルであり、コードのトラブルシューティングを容易にし、将来の再利用を容易にするのに役立ちます。

要約すれば:

  1. インスタンスメソッド: 最も一般的なメソッドタイプ。各インスタンスに固有のデータとプロパティにアクセスできます。
  2. 静的メソッド: クラス内の他のものにはアクセスできません。完全に自己完結型のコード。
  3. クラスメソッド: クラス内の制限されたメソッドにアクセスできます。クラス固有の詳細を変更できます。

このチュートリアルが少し進んだ場合、または探していたものとはまったく異なる場合は、Pythonの初心者からプロまで、これらのコースを見てみませんか?これらの5つのWebサイトは、Pythonの初心者にも最適です。 Pythonを物理的に実際に使用したいが、Raspberry Piに飽きている場合は、次のガイドをご覧ください。 PythonでArduinoを制御する

共有 共有 つぶやき Eメール コマンドプロンプトを使用してWindowsPCをクリーンアップする方法

Windows PCのストレージ容量が不足している場合は、これらの高速コマンドプロンプトユーティリティを使用してジャンクを一掃します。

次を読む
関連トピック
  • プログラミング
  • プログラミング
  • Python
著者について ジョーコバーン(136件の記事が公開されました)

Joeは、英国のリンカーン大学でコンピュータサイエンスを卒業しています。彼はプロのソフトウェア開発者であり、ドローンを飛ばしたり音楽を書いたりしていないときは、写真を撮ったりビデオを制作したりしていることがよくあります。

ジョーコバーンのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください