1. ホーム
  2. python

[解決済み] 静的メソッドを使用する利点は何ですか?

2022-09-24 06:38:44

質問

Pythonのコードでunboundメソッドエラーに遭遇しました。

import random

class Sample(object):
    '''This class defines various methods related to the sample'''

    def drawSample(samplesize,List):
        sample=random.sample(List,samplesize)
        return sample

Choices=range(100)
print Sample.drawSample(5,Choices)

ここで多くの役に立つ投稿を読んだ後、私はどのようにすれば @staticmethod を追加して、コードを動作させることができます。私はpythonの初心者です。なぜ静的メソッドを定義したいのか、どなたか説明していただけませんか?あるいは、なぜすべてのメソッドが静的メソッドとして定義されていないのでしょうか?

どのように解決するのですか?

静的メソッドは、(通常のメソッドのように)クラスのインスタンスの属性にアクセスできず、(クラスメソッドのように)クラス自体の属性にアクセスできないため、用途が限られます。

だから、日常的なメソッドとしては有用ではない。

しかし、クラスと一緒にいくつかのユーティリティ関数(例えば、ある型から別の型への単純な変換)をグループ化するのに便利な場合があり、提供されるパラメータ(そしておそらくモジュールへのいくつかのグローバル属性)以外の情報へのアクセスを必要としません。

それらはクラスの外側に置くこともできますが、クラスの内側にそれらをグループ化することは、そこでしか適用できない場合、意味をなすかもしれません。

また、モジュール名ではなく、インスタンスまたはクラスを介してメソッドを参照することができ、読者はそのメソッドがどのインスタンスに関連しているかを理解するのに役立つかもしれません。