参照できるように、クラスなどの名前空間にオブジェクトをインポートできるかどうか疑問に思っています。基本的に、ここで明示的な再定義を削除します。
import Bar
class Foo:
X = Bar.X
Y = Bar.Y
Z = Bar.Z
私は基本的にFooからBar.Xなどを参照できることに興味があります。from ...import...も期待どおりに機能しませんでした。
参照できるように、クラスなどの名前空間にオブジェクトをインポートできるかどうか疑問に思っています。基本的に、ここで明示的な再定義を削除します。
import Bar
class Foo:
X = Bar.X
Y = Bar.Y
Z = Bar.Z
私は基本的にFooからBar.Xなどを参照できることに興味があります。from ...import...も期待どおりに機能しませんでした。
これを行う必要があるとは思いません (私には本当に悪い考えのように感じます)。しかし、あなたが主張するなら、ここに私の試みがあります:
import module
class Foo(object):
pass #Other stuff here
for k,v in module.__dict__.items():
try:
setattr(Foo,k,v)
except AttributeError:
pass #read-only attributes?
Foo
もちろん、 の属性を の属性で上書きしないようにするのは、プログラマーの責任ですmodule
。
インポート時にモジュールの名前を変更したいだけの場合は、次のように実行できます。
import Foo as Bar
または、できますfrom import ... as name_in_this_module
。
たとえば、Windows 固有のものと、Unix で同じ機能を提供するカスタム モジュールがあるとします。
try:
import windows_module as sys_dep_mod
except ImportError:
import unix_module as sys_dep_mod
def myfunc(baz):
bar = sys_dep_mod.func(baz)
#do something with bar
#return something