私はOOPを初めて使用し、次のような状況にあります。いくつかのレポートに使用されるレポート「エンジン」のようなものがあります。必要なのは構成ファイルのパスだけです。
Pythonでコーディングしますが、これは不可知論的な質問です。したがって、次の2つのアプローチがあります。
A)クラスReportEngineは、必要なものはすべて含まれているが、構成ファイルのパスを含む抽象クラスです。このようにして、ReportXクラスをインスタンス化する必要があります
class ReportEngine(object):
...
class Report1(ReportEngine):
_config_path = '...'
class Report2(ReportEngine):
_config_path = '...'
report_1 = Report1()
B)クラスReportEngineは、構成ファイルのパスを渡してインスタンス化できます
class ReportEngine(object):
def __init__(self, config_path):
self._config_path = config_path
...
report_1 = ReportEngine(config_path="/files/...")
どちらのアプローチが正しいですか?重要な場合は、compositionを使用してレポートオブジェクトを別のクラスに挿入します。