次のように、モデルに追加の機能を与える基本抽象モデル クラスを定義しました。
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で似たようなことをしたいと思っています。