クラスを動的にインポートし、そのクラスで関数を実行しようとすると、いくつか問題が発生します。これは特に私の問題です。動的インポート - Python - 呼び出し関数が機能しない
dynamic_imports
という名前のディレクタには、pythonスクリプトdyn_imports.py
があります。このフォルダ内にはscripts
というサブディレクトリがあります。このスクリプトディレクトリには、__init__.py
と、AbhayScript.py
というPythonクラスがあります。クラスAbhayScript
では、と呼ばれる機能がありますsay_hello()
:dyn_imports.py
から、私はこれまでのところ
AbhayScript
に機能say_hello()
をscripts.AbhayScript
をインポートし、呼び出すことができるようにしたいと思い、私は様々な試みました__import__
,importlib.import_module
、pydoc.locate
などのオプションがあります。これらのオプションはすべてmodule
AbhayScriptにアクセスできますが、getattrs()
を試してみたり、オブジェクトを呼び出そうとすると、その呼び出しができない、または属性がないというエラーが表示されます。
dyn_imports.py - 私の実験の一つ
myclass = 'scripts.AbhayScript'
import importlib
mymod = importlib.import_module(myclass)
mod,newclass = myclass.rsplit('.',1)
ncls = getattr(mod,newclass) #throws an AttributeError that 'str' object has no attribute
AbhayScript.pyコード
class AbhayScript(object):
def say_hello(self):
print 'Hello Abhay Bhargav'
を次のようにディレクトリ構造があります
スクリプトフォルダ内の.pyは空です。
私は、Stackoverflowのほぼすべてのソリューションを試しましたが、私は少しこれに惑わされています。私は間違って何をしていますか?