Pythonで、それは、関数呼び出し内のリストから変数を抽出することが可能です

Don212:

私はSDKに関数呼び出しを実行し、共通の作成機能を作成しようとしています

FUNC: SDK関数は、私の最初のパラメータとして渡され、関数自体は編集することができない
要求を:これは、すべてのエンドポイントを期待する作成することをオブジェクトである
引数を:渡されたSDKの機能によって異なりますパラメータリスト

SDKの関数のシグネチャ
def create_a(self, create_type_a_details):
def create_b(self, extra_val_one create_type_b_details):
def create_c(self, extra_val_one, extra_val_two, create_type_c_details):


現在の実装

def create_resource(func, request, *args):

        try:
          if len(args) == 1:
            response = func(args[0], request)
          elif len(args) == 2:
            response = func(args[0], args[1], request)
          else:
            response = func(request)
        return response.data

    except ServiceError as e:
        log.error("Failed create operation {message}".format(message=e.message))
        raise e


私は明白な理由のために、上記の溶液好きではありません。別のSDKは、リクエストオブジェクトの前に三番目のパラメータを取る関数を作成している場合は、私は新しいのelifを追加する必要があります。

私は値を抽出するためにSDKの機能を編集せずにパラメータを動的に設定してSDK関数を呼び出すことができます方法はありますか?私は、関数呼び出しのラムダの内部を使用することはできますか?

おかげDonagh

azro:

あなただけの拡張もargs異なるパラメータとして各要素を与えます:

def create_resource(func, request, *args):
    response = func(*args, request)
    return response.data

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=388197&siteId=1