[记录] 关于super(class, self).sudo().method 与 super(class, self.sudo()).method 的解释
-
Q:
这样写 sudo,,, 被循环了,,,<br /> def write(self, vals):<br /> res = super(event_registration, self).sudo().write(vals)<br /> return res<br />
Joshua(470534800) 21:51:42
super(event_registration, self.sudo()).write(vals)
【大校】重庆-mrshelly(49812643) 2015-12-21 17:53:05
super(xxoo, self).sudo().ooxx
同
super(xxoo, self.sudo).ooxx
这两个的区别在哪里呢?
【少校】上海-开阖-正翔
@重庆-mrshelly super函数其实一个构造器,每次返回第一个参数的父类的一个代理,调用函数的时候,使用第二个参数,作为函数的self
【少校】上海-开阖-正翔 2015/12/21 22:11:14
super(xxoo, self.sudo).ooxx,所以这个 调用的是父类的函数,但是self还是子类的实例,且环境中的uid变成了1
2015/12/21 22:11:39
【少校】上海-开阖-正翔 2015/12/21 22:11:39
super(xxoo, self).sudo().ooxx 但是这一个,返回了一个父类的代理
【少校】上海-开阖-正翔 2015/12/21 22:12:06
但是调用sudo()后,似乎 重新browse了一下,此时borwse到的是父类的对象。。。
【少校】上海-开阖-正翔 2015/12/21 22:12:11
可能是这样解释的
先记录. 谢谢正翔的分析.