私の要件は、3 つのステップで HTML から PDF を生成する標準フレームワークがあることです。
1) DB からデータを取得し、そこから意味を作成し、XML を読み取り、設定をオーバーライドまたは決定するなど - pre_processing
2) 前処理されたデータを使用して HTML テンプレートを作成する - render_template
3) HTML から PDF への変換を実行し、PDF を取得します。-invoke_service _
現在、場合によっては異なる PDF エンジンが必要になる可能性があり、実装が変更される可能性があります...その中には、非常に厳密なデータまたは独自の設定が必要な場合もあります。
したがって、1 、オーバーライド 2、オーバーライド 3を拡張する必要があるかもしれません。この実装を構成可能にして、簡単に切り替えられるようにしたいと考えています。
基本クラスを作成してから、実際に実行時オブジェクトになる Foo.py 実装と Bar.py 実装を作成することを考えています。単純な Python でこれを取得するにはどうすればよいですか?
私が考えることができるひどい方法は次のとおりです。
#Module Name ServiceHandler
def implementation(imp_name):
try:
from imp_name import imp_class
return imp_class(AbtractClass)
else:
Sorry No Implemenation Found!
class AbstractClass(...)
def __init__
Gets invoked in another object method as
self.ServiceHandler.implementation(read_from_xml)
この問題を解決するための良い指針を教えてもらえますか? 基本的には Foo(Base) または Bar(Base) が必要で、これは構成を読み取ってそれにマップするようなものでなければなりません。
私の現在のモジュールレイアウトは次のとおりです。
モジュール.py
- base.py
- foo.py
- bar.py
- unknown.py は簡単に拡張できる必要があります。