検索

ホームページ  >  に質問  >  本文

Python种staticmethod和classmethod有什么区别,具体用法呢。什么时候用。

黄舟黄舟2766日前461

全員に返信(6)返信します

  • 迷茫

    迷茫2017-04-17 16:27:00

    インスタンスを作成したくないため静的メソッドは宣言されていませんが、メソッドがインスタンス自体のデータを変更しないことが宣言されています。

    classmethod は、インスタンスを作成するのではなく、クラス自体を操作するため、宣言されていません (cls を渡した後、独自のプロパティとメソッドを操作できます)。

    これはあくまで私の個人的な意見ですので、ご参考までに。

    返事
    0
  • 迷茫

    迷茫2017-04-17 16:27:00

    少し簡単に理解すると
    役に立つかもしれません

    Python クラスの @staticmethod と @classmethod についての簡単な説明

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:27:00

    直感的に、classmethod と staticmethod の関数シグネチャは異なります。一方にはパラメーターがあり、もう一方にはパラメーターがありません。
    はすべて Python デコレータです。クラスメソッドではパラメータは cls である必要はなく、任意の名前付き変数を使用できることに注意してください。親クラスと子クラスが関与していない場合、両者の動作は同じように見えますが、親クラスと子クラスが設計されている場合、クラスメソッドは呼び出し元の子クラスのオブジェクトを決定できます

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 16:27:00

    静的メソッド、クラスメソッド、および通常の内部メソッドの違いは、使用方法の微妙な違いだけでなく、コードの分離にもあります。 static にはクラスやインスタンスの情報は必要ありません。 class にはクラス情報が必要です。 通常のメソッドにはインスタンス情報が必要です。これらの詳細にはあまり注意を払わないでください。分からない時は普通に書いて下さい。必要を感じたときにどちらに切り替えるべきかがわかります。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 16:27:00

    リーリー

    返事
    0
  • 阿神

    阿神2017-04-17 16:27:00

    オブジェクト指向言語では、static は通常、変更されたメソッドまたは変数がインスタンスに属さず、クラスに属していることを意味します。

    静的メソッドの役割: インスタンスを構築せずにメソッドを呼び出す必要がある場合、このメソッドを静的として定義する必要があります。静的メソッドは override にすることができず、ほとんどの OO 機能を備えていません。実際には、静的メソッドには手続き型言語の概念があります。

    Python コードを書いた私自身の経験に基づくと、たとえば、静的メソッドと関数のどちらを選択すればよいのかわかりません。したがって、OO ではなく Python 独自の機能を学ぶことに重点を置くことをお勧めします。

    返事
    0
  • キャンセル返事