super
実際には、「親クラス」を見つけてそのオブジェクトを返すために使用されることがわかっています。self.__class__.__mro__
私が混乱したのは、正確にいつ使用するかです。
以下のようなサンプルモデルコードがあるとします
version_1
class Example(models.Model):
name = models.CharField()
age = models.IntegerField()
def save(self, **args, **kwargs):
obj = super(Example, self).save(self, **args, **kwargs)
obj.name = "name changed"
obj.age = "age changed"
return obj
version_2
class Example(models.Model):
name = models.CharField()
age = models.IntegerField()
def save(self, **args, **kwargs):
self.name = "name changed"
self.age = "age changed"
obj = super(Example, self).save(self, **args, **kwargs)
return obj
上で観察できるように
version_1では、最初に呼び出しsuper
てフィールドを変更し、obj を返しました
version_2では、フィールドを変更した後、super を呼び出して obj を返しました
では、フィールドの変更の前後に super が呼び出されるとどうなるでしょうか?
最後に知りたい/確認したいことは
- djangoフォーム/モデルで正確にsuperが使用される場所/理由。
- django / pythonでそれらを使用する正確な概念は何ですか(私がこれを間違って理解した場合)。