gpt4 book ai didi

python - 如何避免过多的参数传递?

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:43 25 4
gpt4 key购买 nike

我正在用 python 开发一个中等规模的程序,分布在 5 个模块中。该程序在主模块中使用 OptionParser 接受命令行参数,例如主.py。这些选项稍后用于确定其他模块中的方法的行为方式(例如 a.py、b.py)。当我扩展用户自定义行为或程序的能力时,我发现我最终需要在 a.py 中的一个方法中使用这个用户定义的参数,该方法不是由 main.py 直接调用,而是被另一个调用a.py中的方法:

主要.py:

 import a
p = some_command_line_argument_value
a.meth1(p)

a.py:

meth1(p):
# some code
res = meth2(p)
# some more code w/ res

meth2(p):
# do something with p

这种过多的参数传递似乎是浪费和错误的,但在我努力尝试时我想不出解决这个问题的设计模式。虽然我接受过一些正规的 CS 教育(在我的理学学士学位期间辅修 CS),但自从我开始使用 python 以来,我才真正开始欣赏良好的编码实践。请帮助我成为更好的程序员!

最佳答案

创建与您的程序相关的类型的对象,并在其中存储与每个相关的命令行选项。示例:

import WidgetFrobnosticator
f = WidgetFrobnosticator()
f.allow_oncave_widgets = option_allow_concave_widgets
f.respect_weasel_pins = option_respect_weasel_pins

# Now the methods of WidgetFrobnosticator have access to your command-line parameters,
# in a way that's not dependent on the input format.

import PlatypusFactory
p = PlatypusFactory()
p.allow_parthenogenesis = option_allow_parthenogenesis
p.max_population = option_max_population

# The platypus factory knows about its own options, but not those of the WidgetFrobnosticator
# or vice versa. This makes each class easier to read and implement.

关于python - 如何避免过多的参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580792/

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