这是一个Python类中的示例方法:
def publish_aggregate_account_group_stats(self,account_group_token): message = { "type": "metrics-aggregate-account-group-stats","accountGroupToken": account_group_token } try: self._get_writer().write(message) except: self._put_cache(message)
在我的班级中有一些方法都运行try / except,我认为可以通过简单地创建一个装饰器来清理或清理它来为我处理.我只是不确定装饰器通过访问self来看起来/工作.
解决方法 这样的事情会起作用:from contextlib import contextmanagerclass Test(object): def __init__(self): self.j = set() @contextmanager def handle_exc(self,msg): try: yIEld except: print('adding to internal structure:',msg) self.j.add(msg) def test(self): m = 'snth' with self.handle_exc(m): raise Exception('error')
装饰器很难在这里使用,因为你在函数本身内创建了值,所以外部装饰者永远不会知道它们,除非你找到一种方法来传播它们(通过一定的例外或其他东西).
总结以上是内存溢出为你收集整理的Python Decorator访问自全部内容,希望文章能够帮你解决Python Decorator访问自所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)