1

我已经定义了一个基础抽象模型类,它为模型提供了一些额外的功能,如下所示:

class BaseModel(models.Model):
    # ... some fields and methods
    class Meta:
        abstract = True

class Model1(BaseModel):
    # ... some fields and methods
    def required_method(self, *args, *kwargs):
        # implementation

class Model2(BaseModel):
    # ... some fields and methods

现在我需要确保每个派生类都定义了许多必需的方法。如果其中任何一个未定义,我需要在 manage.py 尝试执行时抛出异常。所以换句话说,BaseModel 应该要求每个派生类定义一些接口,这个 BaseModel 使用,但不是自己定义的。

我应该在哪里实施此检查?是检查这个__init__BaseModel好地方吗?

编辑:这样做的目的只是为了安全。如果有人或我在一段时间后尝试从BaseModel类继承,但忘记实现所需的方法,代码仍将运行,直到BaseModel代码尝试执行任何缺失的方法。所以这对我来说有潜在的危险。最好防止执行此类代码。我相信 Java 有这种称为接口的机制。我想在 Python 中做类似的事情。

4

1 回答 1

2

使用abc包中的装饰器来标记哪些方法应该是抽象的。该包裹会为您进行检查,因此您甚至不必担心检查的正确位置;-)

于 2012-07-18T14:26:00.030 回答