我试图在调用子类之前初始化一个超类。下面是我想做的一个例子:
class AbstractSourceParser(object):
def __init__(self, filepath):
self.source_type = get_type_from_filepath(filepath)
@staticmethod
def factory(source_type):
source_type = source_type.upper() if source_type else None
if source_type == SourceType.CSV.upper():
return CSVSourceParser()
class CSVSourceParser(AbstractSourceParser):
...
然后我想这样称呼它:
parser = AbstractSourceParser("/tmp/file.csv").factory(self.type)
我认为我上面所写的在代码中没有意义,但基本上我想在将一些数据传递给超类之后检索工厂方法。怎么做
目前,我正在做的是以下几点,我认为这很难看(如果不可能是不正确的话)——
>>> _parser = AbstractSourceParser("/tmp/file.csv")
>>> parser = _parser.factory(_parser.source_type)
您可以使
factory()
成为常规实例方法,并让它完成以下工作:因此,如果希望在父构造函数中定义源类型,则可以不带参数地调用
factory()
。但如果需要,仍然可以提供不同的source_type
你问得明白吗
相关问题 更多 >
编程相关推荐