在runtim设置默认值

2024-10-06 11:25:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我管理一个相当大的基于python的量子化学套件PyQuante。我目前正在努力解决如何设置各种默认值,以便用户可以在运行时从不同的选项中进行选择。在

例如,我有三种不同的计算电子排斥积分的方法。我们把它们称为a,b,c。我以前只是简单地选择一个我最喜欢的(比如c),然后把它硬连接到计算这些积分的模块中。在

我现在修改了这个模块,默认值.py,包含了所有这些硬线。但这是在编译/安装时设置的。我现在希望用户能够在运行时重写这些选项,例如,使用。pyquanterc.py文件。在

在我的积分程序中,我现在有

from Defaults import integral_method

我知道字典和.update()方法。但我不知道在现实生活中我会怎么用这个。我的默认模块看起来像

^{pr2}$

我应该修改结尾吗默认值.py去寻找一个。Python.pythonrc.py归档并重写这些值?E、 g

if os.path.exists('$HOME/.pythonrc.py'): do_something

如果是这样的话,你应该看起来像什么?在


Tags: 模块文件方法用户frompy程序套件
3条回答

我可以通过工厂课程来完成。在

class IntegralSolver:
    """
    Factory class containing methods for solving integrals.

    >>> solver = IntegralSolver("method1")
    >>> solver(x)
    # solution via method1

    Can also be used directly:
    >>> IntegralSolver.method2(x)
    # solution via method2
    """
    def __init__(self, method):
        self.__call__ = getattr(self, method)

    @staticmethod
    def method1(x):
        return method1_solution

    @staticmethod
    def method2(x):
        return method2_solution

这实际上取决于用户如何运行工具集。如果他们每次都在盘旋python代码,只需在顶部标记的选项处设置一个块就可以了。如果他们从命令行运行它,使用argparse库允许他们在命令行上切换选项。也许让它用configParser从一个文件中读取选项,用你的选项来读取一个默认文件,如果用户设置了它,则另一个带有选项的文件。在

使用当前的设置,用户可以很容易地更改脚本中的默认函数:

import Defaults
Defaults.integral_method = somefunc

如果用户将此添加到脚本中,则所有使用integral_methodfromDefaults的模块都将使用somefunc来计算积分。在

相关问题 更多 >