0

参照できるように、クラスなどの名前空間にオブジェクトをインポートできるかどうか疑問に思っています。基本的に、ここで明示的な再定義を削除します。

import Bar

class Foo:
   X = Bar.X
   Y = Bar.Y
   Z = Bar.Z

私は基本的にFooからBar.Xなどを参照できることに興味があります。from ...import...も期待どおりに機能しませんでした。

4

1 に答える 1

0

これを行う必要があるとは思いません (私には本当に悪い考えのように感じます)。しかし、あなたが主張するなら、ここに私の試みがあります:

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
于 2012-09-13T14:05:59.310 に答える