【发布时间】:2009-12-31 17:34:13
【问题描述】:
我正在寻找一种方法来获取派生自 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 模型并生成适当的页面,但目前我正在手动维护一个列表,有没有办法确定派生自“的任何内容的类名列表”资产”?
【问题讨论】:
-
没想到,但我需要知道要在哪些文件中进行 grep,并非所有模型都在同一个文件中,我不想 grep 整个源代码树。
-
您可以通过使用自定义元类来教父类在声明子类时跟踪其子类,但坦率地说,这对于听起来有点微不足道的事情来说确实需要做很多工作。