私はpythonとdjangoに比較的慣れていないので、メソッドのオーバーライドと、それが親クラスでのメソッドの動作にどのように影響するかを理解しようとしています。
だから私はこの親クラスにláを持っています:
class Parent():
def save(self):
if not self.slug:
self.slug = self.get_slug()
def get_slug(self):
return slugify(self)
slugifyを独自のUnicodeメソッドで使用したいのでget_slugメソッドをオーバーライドする子クラス(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を使用した場合にのみ、正しい結果を得ることができます。
継承されたメソッドが子クラスのオーバーライドされたメソッドとどのように相互作用するかを誰かが説明してもらえますか?前もって感謝します