gpt4 book ai didi

python - 在 Django 中的抽象父模型类中实现所需的接口(interface)

转载 作者:行者123 更新时间:2023-12-01 05:58:21 25 4
gpt4 key购买 nike

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

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 使用的接口(interface),而不是自己定义的接口(interface)。

我应该在哪里实现此检查? BaseModel__init__ 是检查这个的好地方吗?

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

最佳答案

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

关于python - 在 Django 中的抽象父模型类中实现所需的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11542205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com