实际上我们知道super
用于查找“父类”并返回其对象,例如/使用self.__class__.__mro__
我感到困惑的是何时准确使用它?
假设我们有一个示例模型代码如下
版本_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
版本_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 中使用它们的确切概念是什么(如果我理解错了)。