Я пытаюсь инициализировать суперкласс перед вызовом подкласса.Вот пример того, что я пытаюсь сделать:
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)