2010-11-19 9 views

答えて

2

あなたが何をしたいのかについてのあなたのアイデアを与えることができドラフト例です。

別file.pyで

my_module.py

class RootClass(object): 
    pass 

class ChildClass(RootClass): 
    pass 

import sys 

from my_module import RootClass 

# Loop over all subclasses of RootClass. 
for class_ in RootClass.__subclasses__(): 
    # from module import subclass. 
    __import__(class_.__module__, globals(), locals(), [class_.__name__,]) 

    # Update the global namespace with the new class 
    globals().update({class_.__name__: 
         getattr(sys.modules[class_.__module__], 
           class_.__name__)}) 

print ChildClass 
# OutPut : <class 'my_module.ChildClass'> 

PS:私はあなたがこれをするアドバイスはありません!!!! Pythonは、すでにそれらを見たまで存在するものサブクラス知る方法がないので

+2

これは、すでにインポートされているサブクラスでのみ機能するため、目的を破棄します。 – Derecho

+0

@Dan Ellis:それは私が彼のサブクラスをすでに定義していると思うOPの質問から理解しているものではなく、彼らは基本クラスを知っているすべてのものをimportしたいと思う:import subclass1、subclass2 ... – mouad

3

一般的にはできません。インタプリタは、特定のパッケージが興味のあるクラスのサブクラスを定義しているかどうかを知る方法がありません。原則として、新しいサブクラスを明示的に定義する新しいパッケージまたはモジュールを書くことができます。今すぐインポートする必要があります。通訳者がこれをすべて把握することは非常に面倒です。

関心のあるすべてのサブクラスをインポートするパッケージを作成できます。

1

すべてのサブクラス(おそらく自動生成される)とfrom module import *に対応するモジュールをimport subclassxyにすることができます。ここで

1

これは、単に、可能ではない(その時点では、基本クラスのサブクラス属性になります)。

本当に達成したいことを教えてください。そうすれば、私たちはあなたが解決策を見つけるのを助けることができます。

+0

明示的にそれらをどこにでもインポートせずにサブクラスを使用して、新しいサブクラスを作成して他の場所で使用することができます。 –

関連する問題