「呼び出し可能な」クラス (__call__
メソッドが定義されているクラス) をデコレートして、呼び出される前にバックグラウンド サービスを開始し、__init__
それ自体が呼び出される前に渡された引数を操作して、サービスの詳細を含めることができるようにします。始めました。
たとえば、次のようになります。
@init_service # starts service on port 5432
class Foo(object):
def __init__(self, port=9876):
# init here. 'port' should now be `5432` instead of the original `9876`
def __call__(self):
# calls the background service here, using port `5432`
func = Foo(port=9876)
...
result = func()
クラスinit_service
にはポート番号を持つクラス属性があり、後でサービスをシャットダウンできます。