微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 python 类中使用装饰器处理异常

如何解决在 python 类中使用装饰器处理异常

假设我有这个类,我希望装饰器处理异常:

class A:

    def __init__(self,start: bool):
        self.start = start

    def enc(self,data):
        try:
            if self.start:
                return data.encode()
            return 'ok'
        except AttributeError:
            raise Exception('oh no')
    
    def dec(self,data):
        try:
            if self.start:
                return data.decode()
            return 'ok'
        except AttributeError:
            raise Exception('oh no')   


我想添加一个装饰器来处理异常:像这样:

(这不起作用,@A.type_exc_handler NameError: name 'A' is not defined):

class A:

    def __init__(self,start: bool):
        self.start = start
    
    
    def type_exc_handler(self,func):
        def inner(self,*args,**kwargs):
            try:
                func(self,**kwargs)
            except AttributeError:
                raise TypeError(f"oh no")
            return inner

    @A.type_exc_handler
    def enc(self,data):
        if self.start:
            return data.encode()
        return 'ok'

    @A.type_exc_handler
    def dec(self,data):
        if self.start:
            return data.decode()
        return 'ok'

我怎样才能做到这一点?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。