使用合成时访问“父”对象的属性是否是错误的做法?
我有一堂课,需要根据特定的文件格式运行一个软件。目前,仅支持几种格式,以后可以添加其他格式。这样做的目的是使添加新格式变得尽可能简单和结构化。视软件而定,方法的名称应相同,但步骤不相同。
所有软件都将基于.ini文件中给出的参数返回输出,并且将ini文件的各个部分用作ConfigSection
的类来依次执行操作。
class ConfigSection(object):
def __init__(self,parameters,software=None):
self.parameters = parameters
self.software = software
def call_software(self,name):
self.software = get_softwate(name,self)
self.software.setup()
self.software.run()
def get_output(self):
pass
def do_actions(self):
pass
def get_software(name,section):
# Find right software
# Return subclass of Software with given parameters
class Software(object):
def __init__(self,section):
self.section = section
def setup(self):
# Get the necessary info from 'section'
def run(self):
parameters = self.section.parameters
class A(Software):
def __init__(self,section):
self.section = section
def setup(self):
parameters = self.section.parameters
# Read the necessary parameters for this software and prepare them
# to be used in run
def run(self,parameters):
# Build command using the parameters