2 つ (またはそれ以上) の他のモジュールの 1 つからクラスをインスタンス化するクラスを定義するモジュールがあります。以下にいくつかのコード例を示します。最初の例では、2 つのモジュールがインポートされますが、使用されるのは 1 つだけです (MyIo のインスタンスごとに 1 つ)。2 番目の例では、必要なモジュールのみがインポートされます。上位レベルのモジュールには MyIo のインスタンスが 1 つ以上ある場合があります。
import
2 番目の例が使用されているものだけをインポートする点は気に入っていますが、「コード実行」セクションで行われている 点はあまり好きではありません。
私の質問は次のとおりです。
- どの例がより良いアーキテクチャーの選択であり、その理由は?
- 最終的に使用されないモジュールをインポートすることに対するペナルティはありますか?
- Python のコード実行セクションでのインポートは「悪い形式」と見なされますか?
この例では、両方のモジュールをインポートしますが、使用するのは 1 つだけです...
''' MyIo.py '''
...
...
from DevSerial import Device as DeviceSerial
from DevUSB import Device as DeviceUSB
class MyIo:
def __init__(self, port)
if port.lower() == 'usb':
self.device=DeviceUSB()
else:
self.device=DeviceSerial(port)
...
...
以下は、使用されているモジュールのみをインポートします...
''' MyIo.py '''
...
...
class MyIo:
def __init__(self, port)
if port.lower() == 'usb':
from DevUSB import Device
self.device=Device()
else:
from DevSerial import Device
self.device=Device(port)
...
...