この質問はPythonの継承に関するものですが、Djangoの例で説明されていますが、これは問題にはなりません。
私はこのDjangoモデルを持ってPageおり、RichTextモデルもあります:
class Gallery(Page, RichText):
def save(self, *args, **kwargs):
# lot of code to unzip, check and create image instances.
return "something"
save別のクラスでメソッドを使用することにのみ興味があります。
解決策は次のとおりです。
class MyGallery(models.Model):
def save(self, *args, **kwargs):
# here goes the code duplicated from Gallery, the same.
return "something"
コードの重複を避けたいのですが、Pageとからメンバーを継承することに興味がRichTextありません(したがって、実行したくありませんclass MyGallery(Gallery):。合法である場合は、次のように記述します。
class MyGallery(models.Model):
# custom fields specific for MyGallery
# name = models.CharField(max_length=50)
# etc
def save(self, *args, **kwargs):
return Gallery.save(self, *args, **kwargs)
ただし、inは。ではなくのインスタンスを予期しているため、機能save()しGalleryませGalleryんMyGallery。
メソッドを「切り離して」、そこで定義されているとおりに使用するsave()方法はありますか?GalleryMyGallery
編集:
Gallery私はそれが与えられており、変更することはできないと言うのを忘れました。