python - 如何从子类中获取抽象类名

标签 python django django-models

我有以下几个型号,

class FooBarAbstract(models.Model):
    foobar = models.IntegerField()

    class Meta:
        abstract = True


class Foo(FooBarAbstract):
    foo = models.IntegerField()


class Bar(FooBarAbstract):
    bar = models.IntegerField()



如何使用子类(FooBar)或其对象获取抽象类名称(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/

相关文章:

python - 用手工计算还是程序计算来测试?

python - Django 不会为新的应用程序模型创建新的 sqlite 表

django - Django 支持 JOIN 吗?

mysql - Django ORM 等效于 MySql 多列 IN 子句

python - Django:使用 SQL 手动更改模型字段有哪些缺点?

python - 获取 <br/> 之前的文本 python/bs4

python - Anaconda: cannot import cv2 even though opencv is installed (how to install opencv3 for python3)

python - Python中Pandas/Matplotlib中直方图和密度的叠加

Python Django 1.6 在查看之前为每个请求执行函数

django - “GenericRelatedObjectManager”不是 JSON 可序列化的