2017-06-16 10 views
-1

私はこの方法を書いた:Pythonのデコレータ私のクラスで私の機能チェック

def ts_prep(self, test_id): 
    ltouple =() 
    tab_lib = temp_library.objects.filter(main_id=test_id) 
    l1 = ["Settings", ""] 
    ltouple += (l1,) 
    if tab_lib.count() == 0: ltouple = (l1, ["", ""]) 
    l = [] 
    for r in tab_lib.iterator(): 
     l.append(str(r.l_type)) 
     l.append(str(r.l_val)) 
     ltouple += (l,) 
     l = [] 

    tslist = [x for x in ltouple] 
    return tslist 

どのように私は同じチェックを行い、すべての方法でそれを追加するための場合tab_libチェックを実行する私の方法のためのデコレータを作成することができます?

私は

def p_decorate(func): 
    def func_wrapper(test_id): 
     tab_lib = temp_library.objects.filter(main_id=test_id) 
     l1 = ["Settings", ""] 
     ltouple += (l1,) 
     if tab_lib.count() == 0: ltouple = (l1, ["", ""]) 
     return ltouple 
    return func_wrapper 

を試してみたが、事前まず

+1

def ts_prep(self, test_id): tab_lib = temp_library.objects.filter(main_id=test_id) tslist = [["Settings", ""]] if tab_lib.count() == 0: tslist.append(["", ""]) for r in tab_lib.iterator(): tslist.append([str(r.l_type), str(r.l_val)]) return tslist 

あなたの質問に答えるために、あなたは、これを行うことができますか? SOはコード作成サービスではありません。 – Ding

答えて

0

おかげで動作するようには思えない、あなたのコードは、一般的に多くのことを簡素化することができます。これは同等である必要があります:あなたがこれまでに試してみました何の機能がやっているとどのような

import functools 

def decorator(func): 
    @functools.wraps(func) 
    def wrapper(test_id): 
     tab_lib = temp_library.objects.filter(main_id=test_id) 
     tslist = [["Settings", ""]] 
     if tab_lib.count() == 0: 
      tslist.append(["", ""]) 
     return func(tab_lib, tslist) 

    return wrapper 

@decorator 
def ts_prep(self, tab_lib, tslist): 
    for r in tab_lib.iterator(): 
     tslist.append([str(r.l_type), str(r.l_val)]) 

    return tslist 
+0

AttributeError:PrepareRstインスタンスに '__trunc__'属性がありません –

+0

@ManuelSantiどのコードがそのエラーを発生させ、どの行にあなた自身のコードで同じエラーが発生しませんか? –

+0

ありがとう、今は大丈夫です! –

関連する問題