Python 3 – PythonClassmethod-Pythonチュートリアル

クラスメソッドは、すべてのオブジェクト間で共有されるメソッドです。 クラスメソッドを呼び出すには、クラスを最初の引数として配置します。

クラスメソッドは、インスタンスおよびクラス自体から呼び出すことができます。 これらはすべて同じ方法を使用します。 このメソッドは、クラス変数とメソッドを使用できます。

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

クラスメソッドの例

メソッドをクラスメソッドに変換するには、次を追加します。 @classmethod メソッド定義の前。 パラメータとして、メソッドは常にクラスを取ります。

以下の例では、クラスメソッドを定義しています。 その後、クラスメソッドはクラス自体で使用できます。 この例では、classメソッドはクラスプロパティ名を使用します。

1
2
3
4
5
6
7
8
class Fruit:
name = 'Fruitas'

@classmethod
def printName(cls):
print('The name is:', cls.name)

Fruit.printName()

オブジェクトとクラスの両方でclassmethodを使用できます。

1
2
3
4
5
6
apple = Fruit()
berry = Fruit()

Fruit.printName()
apple.printName()
berry.printName()

パラメータ名はクラスに属します。オブジェクトを使用して名前を変更すると、パラメータ名は無視されます。 しかし、クラスごとにそれを行うと、以下の例のように変更されます。

1
2
3
4
5
6
7
8
9
apple.name="Apple"
Fruit.printName()
apple.printName()
berry.printName()

Fruit.name="Apple"
Fruit.printName()
apple.printName()
berry.printName()

代替執筆

多くの場合、pythonic表記が使用されますが、これは厳密には必須ではありません。
次のようなクラスメソッドを使用することもできます。

1
2
3
4
5
6
7
8
class Fruit:
name = 'Fruitas'

def printName(cls):
print('The name is:', cls.name)

Fruit.printAge = classmethod(Fruit.printName)
Fruit.printAge()

classmethodとstaticmethod

静的メソッドと同様に、クラスメソッドはインスタンス化するオブジェクトを必要としません。

クラスメソッドは、静的メソッドがクラス自体を認識しないという点で静的メソッドとは異なります。 classmethodでは、パラメーターは常にクラス自体です。

静的メソッド クラスやインスタンスについては何も知りません。 関数呼び出しを使用することもできます。

クラスメソッド メソッドが呼び出されたときにクラスを取得します。 クラスの属性とメソッドについて知っています。

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

演習

classmethod記事の演習:

  • クラスメソッドとは何ですか?
  • classmethodはstaticmethodとどのように異なりますか?

例をダウンロード

Hope this helps!

Source link