2017-12-03 13 views
0

私が解決しようとしている主な問題は、特定のクラスのすべてのサブクラスを検出する方法です。私が__subclasses__を使用することができない理由は、それらにアクセスしようとしているコンテキストで子クラスにまだアクセスできないからです。私はこのようなルックスで働いている現在のコンテキストに存在しないサブクラスを取得する

フォルダ構造:私が何をしたいのですがどのような

 
    main.py 
    projects/ 
     __init__.py 
     project.py 
     some_project_child.py 

main.pyから(project.pyで定義されている)Projectのすべてのサブクラスのリストを取得することです。

は私がやってこれを行うことができるよ:

from projects.project import Project

from projects.some_project_child import SomeProjectChild

Project.__subclasses__

私はインポートを追加する必要がされないようしたいのですが、このアプローチの様相私は新しいプロジェクトファイル/クラスを追加するたびに行を追加します。私はディレクトリ内のファイルを繰り返し処理して各自のコンテンツをインポートすることでこれを行うことができることを認識していますが、これを処理するより洗練された方法がありますか?

+1

[この回答をお持ちですか?] https://stackoverflow.com/a/1057534/933770 –

+2

「十億時間の相対的な輸入」という質問への回答を見てください(https://stackoverflow.com/questions/14132789/relative-imports-for-the-billionth-time)。 – martineau

答えて

1

Pythonのようにコンパイルされていない言語の性質上、このようなことはインポートすることができません。 Pythonは、定義されているファイルを実行することなく、どのクラスがどのようなサブクラスを持っているかを知ることはできません。

関連する問題