Я пытаюсь инициализировать поле объектов с классом, который должен знать тип, который его использует:
class Device(Model):
objects = AbstractManager(Device)
# the rest of the class here
Вот как определяется AbstractManager:
class AbstractManager:
def __init__(self, cls: type):
self.cls = cls
def all(self):
result = []
for cls in self._get_subclasses():
result.extend(list(cls.objects.all()))
return result
def _get_subclasses(self):
return self.cls.__subclasses__()
Позже я могу вызвать это и вернуть all () из всех подклассов:
Device.objects.all()
Проблема здесь в том, что я не могу использовать Device при инициализации объектов Device.objects, поскольку Device все еще не инициализирован.
В качестве обходного пути я инициализирую это вне класса, но должен быть лучший способ:
class Device(Model):
objects = None
# the rest of the class here
Device.objects = AbstractManager(Device)
PD: У меня есть фон C # / C ++, так что, возможно, я слишком много думая об этом в типизированном мышлении, не могу сказать