我不知道哪种方法是实现我的目标的最佳方法,因此欢迎提出任何建议。
我有一个包含以下内容的python脚本:
Class1
Class2
Class3
Class4
...
+ some functions
每个类实际上都模仿系统的组成部分(数字模拟转换器,微控制器,串行外围接口等)。为了创建系统,我在主要部分中这样做:
if __name__ == '__main__':
elt1 = Class1(param1)
elt2 = Class1(param2)
elt3 = Class1(param3)
elt1 = Class2(param4)
...
为了创建系统,我要创建很多元素。每个新模拟都必须重新制作每个模拟,因此,如果我要对多个模拟进行预编程,则会占用相当大的空间(基本上,我每次必须复制粘贴100行代码)。
我想定义一个函数:creation of the system
。当前看起来像这样:
def creation_system(parameters):
elt1 = Class1(param1)
elt2 = Class1(param2)
elt3 = Class1(param3)
elt1 = Class2(param4)
...
现在,系统是在函数的本地存储空间中定义的,我想在主要部分中对其进行访问以执行以下操作:
if __name__ == '__main__':
for simulation_parameter in parameters:
creation_system(parameters)
compute()
save_result()
我可以想到的两种方法是返回在函数末尾创建的每个元素(我猜为元组),或者将它们定义为全局元素。我大约创建了40个变量(elts),因此没有一个非常方便。还有其他可能性吗?
谢谢 :)
似乎您需要创建一个System
包含所有元素的新类。比您可以将参数传递给此类的构造函数。
这是一个代码示例:
class System(object):
def __init__(self, parameters):
self.element0 = Class0 (parameters[0])
self.element1 = Class1 (parameters[1])
self.element2 = Class2 (parameters[2])
def compute():
....
def save_result():
....
if __name__ == '__main__':
parameters = ...
mySystem = System(parameters)
mySystem.compute()
mySystem.save_result()
或者,您可以有一个仅包含所有系统共有元素的通用类(类似于上面的类),然后创建从先前的类继承并具有特殊行为的新类:
class SpecificSystem(System):
def __init__(self, parameters):
super().__init__(parameters)
# Additional elements specific to this system
self.element3 = Class3 (parameters[3])
def compute():
# Behavior specific to this system
....
# Retain save_result() from superclass
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句