加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 编程开发 > Python > 正文

我应该装饰一个函数吗?

发布时间:2020-09-05 03:16:24 所属栏目:Python 来源:互联网
导读:试图确定我是否应该尝试使用装饰器或其他一些Pythonic方法来减少我的许多功能所做的代码.我希望这些函数能够在每个函数的开头调用可能的另一个函数,或以某种方式“装饰”每个函数的开头.我之前从未使用过装饰器,并且正在努力以pythonic方式实现这种装饰思想,

试图确定我是否应该尝试使用装饰器或其他一些Pythonic方法来减少我的许多功能所做的代码.我希望这些函数能够在每个函数的开头调用可能的另一个函数,或以某种方式“装饰”每个函数的开头.我之前从未使用过装饰器,并且正在努力以pythonic方式实现这种装饰思想,以减少每个函数的共同代码集.

我有很多函数会在函数开始时执行相同的一组步骤.但是,公共代码存在一些结构问题,这使得这个“装饰”想法变得困难:

>这些函数都在父类的子类中.
>函数之间的通用命令引用变量名称
特定于函数的函数(但函数的子集
名称).
>常用命令需要返回调用者而不执行任何调用
如果满足某个条件,则更多的子功能. (“如果jobj:”示例代码中的块)

对于变量/属性示例,子函数get_nas_server(self)将在公共代码集中使用“nas_server”变量变量.从函数名中减去get_会显示要在公共代码集中使用的变量名的基础.从“get_nas_server”函数名派生的示例变量名称和对象属性:

nas_server
nas_server.json
self.nas_server(属性)

以下是其中一个函数的公共代码:

        ####################################################################
        def get_nas_server(self):
        ####################################################################
            """nGets COMMAND nas_server and places data into self.nas_server"""

           try:
               self.nas_server
               return self.nas_server
           except AttributeError:
               pass
           self.get_file_cmd('nas_server')
           jobj = self.fresh_json('nas_server.json')
           if jobj :
               self.nas_server = jobj
               return self.nas_server
           self.get_file_cmd('get_nas_server')

函数中上面代码以下的所有内容都是特定于功能目的,不适合在此讨论.基本上我试图让所有代码在我的函数中重复使用,但代码必须根据函数名称更改变量和属性.

感谢阅读,如果你有这么远,感谢所有的帮助.

最佳答案 看起来像你可以在父类中定义为辅助方法的东西:

class Parent(object):
    def _get_something(name):
        try:
            return getattr(self,name)
        except AttributeError:
            pass
       self.get_file_cmd(name)
       jobj = self.fresh_json(name+'.json')
       if jobj :
           setattr(self,name,jobj)
           return jobj
       self.get_file_cmd('get_'+name)

如此片段演示,您可以使用getattr(),setattr()hasattr()函数按名称引用对象属性.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读