在运行时设置默认值

问题描述

| 我管理着一个相当大的基于python的量子化学套件PyQuante。我目前正在努力设置各种默认值,以便用户可以在运行时选择不同的选项。 例如,我有三种不同的方法来计算电子斥力积分。我们称它们为a,b,c。我以前只是简单地挑选一个我最喜欢的(例如c),然后将其硬连线到计算这些积分的模块中。 我现在对其进行了修改,以使用包含所有此类硬接线的模块Defaults.py。但这是在编译/安装时设置的。我现在希望用户能够在运行时重写这些选项,例如使用.pyquanterc.py文件。 在我的整体程序中,我目前有类似
from Defaults import integral_method
我知道字典和.update()方法。但是我不知道如何在现实生活中使用它。我的默认模块看起来像
integral_method = c
我应该修改Defaults.py的末尾以查找.pythonrc.py文件并覆盖这些值吗?例如。
if os.path.exists(\'$HOME/.pythonrc.py\'): do_something
如果是这样,那么do_something应该是什么样?     

解决方法

使用当前设置,用户可以轻松地在脚本中更改默认功能:
import Defaults
Defaults.integral_method = somefunc
如果用户将其添加到脚本中,则所有从
Defaults
中使用
integral_method
的模块都将使用
somefunc
来计算积分。     ,我可以通过工厂课程来做到这一点。
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代码,只需在顶部标有OPTIONS的位置设置一个块就可以了。如果他们在命令行上运行它,请使用argparse库来允许他们在命令行上切换选项。也许它可以使用configParser从文件中读取选项,以读取包含选项的默认文件,如果用户对其进行了设置,则还可以获取包含其选项的其他文件。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...