加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

这是在Python中执行数据结构操作列表的好方法吗?

发布时间:2020-12-20 11:13:37 所属栏目:Python 来源:网络整理
导读:我有一个数据字典,关键是文件名,值是其属性值的另一个字典.现在我想将这个数据结构传递给各种函数,每个函数都对属性进行一些测试并返回True / False. 一种方法是从主代码中明确地逐个调用每个函数.但是我可以这样做: #MYmodule.pyclass Mymodule: def MYfun
我有一个数据字典,关键是文件名,值是其属性值的另一个字典.现在我想将这个数据结构传递给各种函数,每个函数都对属性进行一些测试并返回True / False.

一种方法是从主代码中明确地逐个调用每个函数.但是我可以这样做:

#MYmodule.py
class Mymodule:
  def MYfunc1(self):
  ...
  def MYfunc2(self):
  ...

#main.py
import Mymodule
...
#fill the data structure
...
#Now call all the functions in Mymodule one by one
for funcs in dir(Mymodule):
   if funcs[:2]=='MY':
      result=Mymodule.__dict__.get(funcs)(dataStructure)

这种方法的优点是当我向MYmodule添加更多逻辑/测试时,主类的实现不需要改变.

这是解决手头问题的好方法吗?这个解决方案有更好的替代方案吗?

解决方法

我会说更好更多的Pythonic方法是定义一个 decorator以指示你想要使用哪些函数:

class MyFunc(object):
    funcs = []
    def __init__(self,func):
        self.funcs.append(func)

@MyFunc
def foo():
    return 5

@MyFunc
def bar():
    return 10

def quux():
    # Not decorated,so will not be in MyFunc
    return 20

for func in MyFunc.funcs:
    print func()

输出:

5
10

基本上,您执行相同的逻辑:仅采用以特定方式定义的函数,并将它们应用于特定的数据集.

(编辑:李大同)

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

    推荐文章
      热点阅读