52

ユーティリティ ファイルを意図したファイルがあります。ファイルには、多くの静的メソッドが含まれている必要があります。

この方法でクラス内のメソッドを定義する必要があります:

#utility.py
class utility(object):
    @staticmethod
    def method1(a,b,c):
        pass

    @staticmethod
    def method2(a,b,c):
        pass

または、次のように使用します (クラスなし):

#utility.py
def method1(a,b,c):
    pass

def method2(a,b,c):
    pass
4

3 に答える 3

39

2 番目のオプションは、Python での手口です。つまり、関数をインポートするだけなら、次のようなことができます。

from utility import some_func

関数をインポートします。

ベスト プラクティスは、静的関数のみを使用している場合、それらを別のモジュールのグローバル名前空間に配置するだけで、作業が大幅に楽になります。あなたがしようとしているのは、オブジェクトを作成し、それらを静的メソッドで埋めることです。.pyファイルで関数を定義できるのに、なぜこれを行うのでしょうか?

実際、あなたがやろうとしていることすでに行われています。いくつかの優れたユーティリティ関数を保存しようとしています。は、大多数のPythonistapython-requestsに愛されているサードパーティのライブラリであり、これを行うだけです. 優れたユーティリティ機能を別のモジュールに格納します。これが例です。

于 2013-10-27T16:38:57.117 に答える
11

この質問は少し意見に基づいていますが、2番目の方が良いと思います。冗長性を減らします。最初の方法を使用して、次のことを行う必要があります。

import utility
utility.utility.method1(...)

また:

from utility import utility
utility.method1(...)

ただし、2番目のものを使用すると、次のことが簡単にできます。

import utility
utility.method1(...)

また:

from utility import method1
method1(...)

静的メソッドのみを含むクラスを作成している場合、私の質問は「なぜそのクラスが必要なのですか?」です。ここでは何のプラスにもなりません。

于 2013-10-27T16:39:58.163 に答える