我正在用python编写数学模型,该模型有约20个输入参数,我将它们存储在一个单独的文件中。我有多个要评估/修改的案例。
每种情况都是一个“ .py”文件,其中包含变量和一些简单函数。将它们导入我的主要代码的最简便的方法是什么?
到目前为止,我一直在使用“ from CaseName import *”从案例中导入所有变量和函数。但是,这不适合于循环处理案件。
我已经看过使用importlib,但是我的代码的某些部分要求导入的变量是全局的。还有其他选择吗?
这是一个简化的示例。
CaseName = "Case1"
a = 1.0
b = 1.0
def InitialConditions(x):
return(10*x)
CaseName = "Case1"
a = 2.0
b = 2.0
def InitialConditions(x):
return(4*x**2)
from Case1 import *
RunCalculation(a,b)
etc....
答案 0 :(得分:0)
使用classes:
class Case1(object):
def __init__(self, x):
self.a = 1
self.b = 1
self.x = x
def initial_condition(self):
print(10 * self.x)
# Initialize and use
case = Case1(x=3)
case.initial_condition()
# Rinse and repeat for all needed classes
如果您开始在全局环境中乱扔杂物,则可能表明您应该使用类。如果您的任何模型共享大量的属性(输入参数)或方法(函数),请考虑使用inheritance扩展类。
例如,如果您的RunCalculation
函数始终是相同的,那么创建一个包含它作为方法的父类,然后从中继承以生成您的个别案例可能会更有效,例如:< / p>
class ParentCase(object):
def __init__(self, a, b, x):
self.a = a
self.b = b
self.x = x
def run_calculation(self):
print(self.a + self.b + 35)
class Case1(ParentCase):
def __init__(self, x):
self.a = 1
self.b = 1
self.x = x
def initial_condition(self):
print(10 * self.x)
case = Case1(x=3)
case.run_calculation() #inherited method