为什么我们需要在django中调用override方法中的当前类

时间:2014-01-28 16:23:38

标签: python django inheritance override

我是Django的新手。我只是从c ++移动。当我想要覆盖类方法时,我有一个问题。为什么我们需要调用当前的类名?例如

class MyStuff( models.Model ):

     def __init__(self, *args, **kwargs):
        super(MyStuff, self).__init__(*args, **kwargs)  #calling super "MyStuff" instead of "Model"

我不确定Django是如何深入内部工作的。我们为什么不拨打super(Model, self)?我怎么称祖父母方法?

1 个答案:

答案 0 :(得分:0)

请参阅this answer

执行super(MyStuff, self).__init__(*args, **kwargs)时,您正在调用'parent'的实例方法

在python中,你有多个inherance,所以当你调用super()时,方法解析顺序不仅仅是一个父级,因为你有多个父级。 见here

希望帮助