デコレータクラスを使用して例外を装飾しましたが、例外は正確な例外クラスでは除外できないようです。 Functools.update_wrapperを使用してデコレータクラスを更新することもできません。Pythonで装飾された例外例外が除外されない
class ClsDecor(object):
def __init__(self,cls):
self.cls=cls
self.counter=0
def __call__(self,*args):
self.counter+=1
return self.cls(*args)
@ClsDecor
class Err(Exception):
def __init__(self):
Exception.__init__(self)
try:
raise Err()
except Err as e:
print 'catched'
except Exception as e:
print 'Not catched'
あなたは 'Exception'からデコレータを派生させてみましたか? –
ありがとう、試して、doesnt仕事。 – Max
'@ ClsDecor'の後、' Err'は 'ClsDecor'の*インスタンス*です。 'Err()'は初期の 'Err'クラスのインスタンスを返します(その名前は装飾によって上書きされます)。 'Err'と' Err() 'から返されたインスタンスの間に明らかな型の不一致があります。型は実際には 'Err.cls'です。 – dhke