2016-10-25 20 views
-3

私は2 @classmethodを持っています。それらのうちの1つは演算子です。他の1つは「pretty_print_2」です。 '演算子'の 'pretty_print_2'を呼び出す必要があります。Python、エラー: "関数が定義されていません"、

@classmethod 
def operators(cls, operator_filter=None, limit_filter=0, ncores=1, exec_mode='sync'): 


    ... 

    response = None 
    try: 
     if Cube.client is None: 
      raise RuntimeError('Cube.client is None') 

     query = 'oph_operators_list ' 

     if operator_filter is not None: 
      query += 'operator_filter=' + str(operator_filter) + ';' 
     if limit_filter is not None: 
      query += 'limit_filter=' + str(limit_filter) + ';' 
     if ncores is not None: 
      query += 'ncores=' + str(ncores) + ';' 
     if exec_mode is not None: 
      query += 'exec_mode=' + str(exec_mode) + ';' 

     if Cube.client.submit(query) is None: 
      raise RuntimeError() 

     if Cube.client.last_response is not None: 
      response = Cube.client.deserialize_response() 


    except Exception as e: 
     print(get_linenumber(), "Something went wrong:", e) 
     raise RuntimeError() 
    else: 

     cls.pretty_print_2(response) 

第2の方法は以下の通りである:

第一の方法は次の通りである

cls.pretty_print_2(response) 
TypeError: pretty_print_2() takes 1 positional argument but 2 were given 

@classmethod 
def pretty_print_2(response): 

をしかし、私は、私は次のエラーに直面したスクリプトを実行するとき

私はどのような提案にも感謝します。 ありがとうございます。

答えて

0

クラスメソッドの最初の引数は、クラス、つまりクラスそのものでなければなりません。だからあなたの方法:

@classmethod 
def pretty_print_2(cls, response) 

@classmethod 
def pretty_print_2(response) 

は次のようになります。

関連する問題