这个问题涉及`em>Python 继承问题,但用Django的例子解释,这应该会很痛。
我有这个Django模型,有 < code> Page 和 < code> RichText 模型,还有:
class Gallery(Page, RichText):
def save(self, *args, **kwargs):
# lot of code to unzip, check and create image instances.
return "something"
我只有兴趣在另一类中使用 < code> 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)
但不会起作用,因为 Gallery
中
()
() gallery
期望有 gallery
,而不是 MyGallery
。
是否有办法从 Gallery
调出 save () <()
方法,在 MyGallery
中使用,并在该方法定义的 MyGallery
中使用?
<强度 > EDIT: 强度 >
我忘了说,Gallery
已经给出,无法更改。