1

我对 python 和 django 比较陌生,我只是想了解方法覆盖以及它如何影响方法在父类中的工作方式。

所以我有这个父类:

class Parent():

    def save(self):
        if not self.slug:
            self.slug = self.get_slug()

    def get_slug(self):
        return slugify(self)

以及我将在其中覆盖 get_slug 方法的子类,因为我想将 slugify 与它自己的 unicode 方法一起使用(我是否正确,通过调用 slugify(self) 他会自动使用 unicode 方法?)。

class Child(Parent):

    def __unicode__(self):
        return u'%s %s' %(self.title, self.season)

    def get_slug(self):
        return slugify(self)

我不确定的是 save 方法如何用于子实例。在我创建了一个新的子实例(例如在管理区域中)之后,继承的 save 方法是否只是调用父类中的 get_slug 方法?

我认为 save 会调用我覆盖的 get_slug 方法而不是原来的方法。也许这很明显,但我似乎不明白。

因此,当我在模板中使用 child.slug 时,我得到了父 get_slug 方法的结果。只有当我使用 child.get_slug 时,我才能得到正确的结果。

有人可以解释一下继承方法如何与子类中的覆盖方法交互。提前致谢

4

0 回答 0