エラー処理を使って遊んでいます。特にユーザー定義エラーの場合。
ただし、次のアプローチが悪い考え/推奨/単純な奇妙であるかどうかはわかりませんか?
import operator
from functools import partial
class GenericError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
def errorhandle(error, func):
print(func.__name__, "says: ", error)
# or perhaps error_dictionary[error]
def f_test_bool(x, bo, y, et, m, ef):
""" generic boolean test. If boolean_operator(x,y) == True --> raise passed in Error """
try:
if bo(x,y):
raise et(m)
else:
return x
except et as err:
ef(err, f_test_bool)
partial_ne = partial(f_test_bool,
bo=operator.__ne__,
et=GenericError,
ef=errorhandle)
partial_ne( x = 5,
y = 6,
m = "oops, 5 is not equal to 6" )
>>> imp.reload(errorhandling)
f_test_bool says: 'oops, 5 is not eqal to 6'
私の考えでは、このようにして、再利用できる単純なモジュールを作成し、作成した新しい関数にユーザー定義のエラーを追加することなく値をパイプすることができると考えました。これで清潔に保てると思いました。