我有以下几个型号,
class FooBarAbstract(models.Model):
foobar = models.IntegerField()
class Meta:
abstract = True
class Foo(FooBarAbstract):
foo = models.IntegerField()
class Bar(FooBarAbstract):
bar = models.IntegerField()
如何使用子类(Foo
或 Bar
)或其对象获取抽象类名称(FooBarAbstract
)?
最佳答案
可以从类'__bases__
中获取该类的基类名称属性。
假设您的派生类始终仅从一个类继承,您可以使用以下内容来获取基类的名称:
class Foo(FooBarAbstract):
def __init__(self):
print(self.__class__.__bases__[0].__name__)
这样 Foo()
将输出:FooBarAbstract
请注意,mro
方法和__mro__
属性不太适合您的目的,因为它们不仅包含父类,还包含当前类和父类父类,因此您必须跳过它们才能获取父类。
关于python - 如何从子类中获取抽象类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52253052/