gpt4 book ai didi

python - 这是在 Python 中对数据结构执行一系列操作的好方法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:28 26 4
gpt4 key购买 nike

我有一个数据字典,键是文件名,值是其属性值的另一个字典。现在我想将此数据结构传递给各种函数,每个函数都对属性运行一些测试并返回 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

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

关于python - 这是在 Python 中对数据结构执行一系列操作的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com