У меня есть куча классов объектов, распределенных по нескольким модулям, все они наследуются от класса BaseFeature.Каким-то образом BaseFeature не может узнать свои подклассы, вызвав метод subclasses ().
В другом модуле, например (pipe.py), я импортирую только класс BaseFeature.Затем я вызываю BaseFeature. подклассы () для объекта класса, а не фактического объекта BaseFeature!Почему-то звонок ничего не возвращает.Но когда я дополнительно импортирую feature_x.py в pipe.py, BaseFeature снова знает свои подклассы.Я хочу избежать этого из-за динамического импорта модуля.
внутри pipe.py:
from base_feature import BaseFeature
class Pipeline:
def init_features:
feature_classes_list = BaseFeature.__subclasses__()
print(feature_classes_list)
# loop for init features in feature_classes_list
[] - пустой список
Но:
import feature_x
import feature_y
затем повторите инициацию объекта, BaseFeature снова «знает» его подклассы.
[<class feature_x>, <class feature_y>]
Я хочу избежать импорта отдельного модуля объекта, потому что их много.И не все нужны каждый раз.Так почему же BaseClass не знает своих подклассов?