Python 3 – 謎解きされたPythonの静的メソッド-Pythonチュートリアル

静的メソッドは、オブジェクトやインスタンスを作成せずに呼び出すことができます。 メソッドを作成して直接呼び出すだけです。 これは、ある意味でオブジェクト指向プログラミングと直交しています。オブジェクトを作成せずにメソッドを呼び出します。

これはオブジェクト指向プログラミングの概念に直接反して実行され、嫌われるかもしれませんが、静的メソッドがあると便利な場合があります。

関連コース: 完全なPythonプログラミングコースと演習

静的メソッド

通常は、関数呼び出しを行うか、メソッドを呼び出すオブジェクトを作成する必要があります。 ただし、他のことを行うこともできます。オブジェクトを作成せずに、クラスのメソッドを呼び出します。

以下の静的メソッドのデモンストレーション。 メソッドを使用してクラスを定義します。 その上にキーワード@staticmethodを追加して、静的にします。

1
2
3
4
5
6
class Music:
@staticmethod
def play():
print("*playing music*")

Music.play()

クラス内の静的メソッド

クラスには、静的メソッドと非静的メソッドの両方を含めることができます。 非静的メソッドを呼び出す場合は、オブジェクトを作成する必要があります。 オブジェクトが作成されていないため、以下のコードは機能しません。

1
2
3
4
5
6
7
8
9
10
class Music:
@staticmethod
def play():
print("*playing music*")

def stop(self):
print("stop playing")

Music.play()
Music.stop()

静的メソッドの呼び出し

通常のクラスメソッドと静的メソッドを混在させることができます(なぜそうではないのですか?)。
これは非常に混乱する可能性があります。オブジェクト指向の概念と関数型プログラミングの両方を1つのクラスに混在させて使用します。

オブジェクトを作成する場合、非静的メソッドを呼び出すことができます。 ただし、オブジェクトを作成せずに静的メソッドを呼び出すこともできます。

1
2
3
4
5
6
7
8
9
10
11
12
class Music:
@staticmethod
def play():
print("*playing music*")

def stop(self):
print("stop playing")

Music.play()

obj = Music()
obj.stop()

全体として、静的メソッドは知っておくと興味深い概念ですが、実際には、静的メソッドを使用することはめったにありません。 静的メソッドを使用することは、設計が悪いことを示している可能性があります。

初心者の方は、 それなら私はこの本を強くお勧めします。

運動

以下の演習を試してください

  • オブジェクトを作成せずにクラス内のメソッドを呼び出すことはできますか?
  • なぜ誰もが静的メソッドを好まないのですか?

これらを完了したら、次の演習に進みます。

例をダウンロード

Hope this helps!

Source link