オリジナルのデコレータを元のパッケージ(例えば、 'mypackage'の'with_error_handler ')に使い、何らかの機能を実行したいと思います。 しかし、引数をあまりにも多く指定した関数オブジェクトやエラーマッサージを返します。私のパッケージで私のパッケージにデコレータを使用する方法
:
def with_error_handler(func):
import traceback
from functools import wraps
from decorator import decorator
@decorator
@wraps(func)
def error_handler(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as e:
strError = traceback.format_exc() + __file__ + '(' + str(args) + str(kwargs) + ')'
print(strError)
return error_handler
そして私は、コードの下に実行したいです。
import mypackage
@mypackage.with_error_handler
def divnum(num):
print(1/num)
@mypackage.with_error_handler
def divone():
print(1/1)
if __name__ == '__main__':
divnum(2)
divone()
これらのエラーが発生しているのはなぜこれらの結果は、ここに
>>>divnum(2)
・・・with_error_handler() takes 1 positional argument but 2 were given
>>>divone()
・・・<function __main__.divone>
のですか? 修正方法?
は '印刷strError'は、Python-3.xのを用いてコヒーレントではありません。 – Kanak
デコレーションの「すぐに使用できる」作成と[decorator.decorator](http://decorator.readthedocs.io/en/stable/tests.documentation.html#decorator-decorator)パーティーライブラリー。彼らはお互いに干渉し、ちょうど1つをつけます。 –
また: 'if __name__ == '__main __'' – Martin