Я ищу способ получить список всех классов, которые происходят из определенного базового класса в Python.Поиск всех классов, полученных из заданного базового класса в python
Более конкретно я использую Django и у меня есть абстрактная базовая модель, а затем несколько моделей, которые являются производной от базового класса ...
class Asset(models.Model):
name = models.CharField(max_length=500)
last_update = models.DateTimeField(default=datetime.datetime.now())
category = models.CharField(max_length=200, default='None')
class Meta:
abstract = True
class AssetTypeA(Asset):
junk = models.CharField(max_length=200)
hasJunk = models.BooleanField()
def __unicode__(self):
return self.junk
class AssetTypeB(Asset):
stuff= models.CharField(max_length=200)
def __unicode__(self):
return self.stuff
Я хотел бы быть в состоянии обнаружить, если кто-то добавляет новую модель AssetTypeX и сгенерировать соответствующие страницы, но в настоящее время я поддерживаю список вручную, есть ли способ определить список имен классов для всего, что происходит от «Asset»?
Да ... «grep» для него;) –
Не думал об этом, но мне нужно было знать, какие файлы нужно вставлять, не все модели находятся в одном файле, и я не хочу для grep всего дерева источников. –
Вы можете научить родительский класс отслеживать свои дети, поскольку они объявлены с использованием пользовательского метакласса, но это действительно большая работа для чего-то, что откровенно звучит немного тривиально. –