django中固有的python抽象基类

django中固有的python抽象基类,python,django,design-patterns,Python,Django,Design Patterns,我想用python制作一个通用模块,它使用来自Django模型的数据,并使用键入来记录接口。该模块应独立于Django模型。这应该如何以蟒蛇式的方式完成 我正在考虑使用ABC类,独立的python文件应该是(shape.py): django模型在另一个文件中定义: from django.db import models from shape import Shape class Box(models.Model, Shape): height= models.FloatField

我想用python制作一个通用模块,它使用来自Django模型的数据,并使用键入来记录接口。该模块应独立于Django模型。这应该如何以蟒蛇式的方式完成

我正在考虑使用ABC类,独立的python文件应该是(shape.py):

django模型在另一个文件中定义:

from django.db import models
from shape import Shape


class Box(models.Model, Shape):
    height= models.FloatField('height')
    area = models.FloatField('area')
当我执行此操作时,会出现以下错误:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

或者,我可以删除基类并使用Shape中所需的参数构造体积计算。但是,由于真实对象包含许多参数,列表变得相当长。

您不必从
形状
派生
,使其成为
形状
,您只需:

TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
from django.db import models
from shape import Shape


class Box(models.Model):
    height= models.FloatField('height')
    area = models.FloatField('area')

Shape.register(Box)