【问题标题】:why do we need to call current class in override method in django为什么我们需要在 Django 的 override 方法中调用当前类
【发布时间】:2014-01-28 16:23:38
【问题描述】:

我是 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)?如何调用祖父方法?

【问题讨论】:

标签: python django inheritance overriding


【解决方案1】:

this answer

当您执行super(MyStuff, self).__init__(*args, **kwargs) 时,您正在调用“父级”的实例方法

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

希望有帮助

【讨论】:

  • 哦,是的。谢谢。我想投票给你,但我的声誉不到 15
猜你喜欢
  • 2020-04-13
  • 2020-11-29
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多