PHPでは、通常、依存関係をコンストラクタに渡します。依存関係を管理するPythonの方法
<?php
class Downloader
{
public function __construct(LoggerInterface $logger){}
}
しかし、Pythonで(私は初心者です)のような
は、私たちはクラスのスコープの外で定義されたオブジェクトを直接使用することができます使用することができます参照してください。
logger = logging.getLogger('mylogger')
class Downloader():
def download():
logger.alert('I am downloading..')
私は、Python開発者がクラス内のサービスをどのように使用するかの推奨を理解したいと思います。私はそれがグローバルスコープにあることに依存しないでしょう
何かのように引数として依存関係を渡すことであろうあなたが必ず注入したくないロガーPHPで 'error_log( 'Foo!')'と同じです。この点で、OOPの実践は実際には違いはありません。 – deceze
これは、 'logger'がDownloader()のビューから' global'であるためです。クラス__init __()関数に依存関係を渡すこともできます。 – nauer