私は、プロジェクトでしばしば再利用されるさまざまな関数のライブラリを構築しています。各関数はステートレスです(作成時にパラメータを必要とせず、メモリもありません)。一部の関数は他の関数を使用します。Python:ステートレス関数ライブラリの設計
これらの関数は、残りのプロジェクトで引数として渡されます。
次のアプローチのどちらが優れていますか?クラスのメソッドとして
def f1(x):
# use x
def f2(x):
# use x and f1
2.Defineすべての機能、および使用に基づく階層のクラスを配置:特定のモジュール内
1.Defineグローバル関数として全機能が
class F1:
def __call__(x):
# use x
f1 = F1()
class F2(F1):
def __call__(x):
# use x and f1
f2 = F2()
私がオプション2と考えた理由は、私の機能の中には共通のものがあるからです。たとえば、機能f2
,f3
,f11
はすべてf1
と呼びます。私は、内の任意の点を見ることができない、あなたはこれらのステートレス機能がある場合は、ではないでしょう、あなたのクラス、中のデータを保存していない場合
class F1:
def __call__(self, x):
self.f1(x)
self.calc(x)
def f1(self, x):
# do something
# don't define calc here; F1 is abstract base class
class F2(F1):
def calc(self, x):
# do something
class F3(F1):
def calc(self, x):
# do something
どこで2をするというアイディアを得ましたか? –
@FrancisAvila:私の考えを説明するために更新された質問を見てください。 – max
'F2'と' F3'は 'F1'を拡張することを意味しましたか?それはコードが言っているものではありません... –