2017-01-04 7 views
0

動的に指定されたモジュールからクラス参照を動的に指定し、それを使用するサードパーティライブラリにそのクラス参照を渡したいと考えています。しかし、私はそれを行うときにクラス自体(したがって、クラスの__init__メソッド)を呼び出すことは望ましくありません。これは、ライブラリが行うことです。__init__を呼び出さずにPythonでクラス参照を取得する方法

私は現在、これを持っている:

import importlib 
import thirdpartylib 

# Load the module 
the_module = importlib.import_module('my_module') 

# Now the class 
the_class = getattr(the_module, 'MyClass')() 

thirdpartylib.process(the_class) 

しかし、もちろん、getattr()は私が望んでいない__init__方法を実行します

インスタンスを作成せずにクラスへの参照を渡して、__init__をトリガーするにはどうすればよいですか?

+6

'getattr'ではなく'() 'のためにインスタンスが返されています。 –

+0

@AshwiniChaudhary - ありがとう。それでおしまい;私の一部の見落とし。私はそれらを逃した。あなたが望むならそれを答えとして投稿すれば、私は受け入れます。 –

答えて

2
the_class = getattr(the_module, 'MyClass') 

これはクラスになります。

the_class = getattr(the_module, 'MyClass')() 

これは、クラスのインスタンスです。末尾の()を削除する必要があります。

関連する問題