class Foo(object):
def whee(self):
return 77
class Bar(Foo):
def whee(self):
return super(Bar, self).whee() + 1
class Baz(Foo):
def whee(self):
return super(self.__class__, self).whee() + 1
Bar
和Baz
都返回了whee()
的相同结果。我习惯了Bar
中的语法。有什么理由不使用Baz
中的语法吗? 最佳答案
有什么理由不使用Baz
中的语法吗?
是的,你不应该使用这种语法是有原因的。如果从Baz
进行子类划分,super()
调用将解析回Baz.whee()
并陷入无限循环。这也适用于语法super(type(self), self).whee()
。
(好吧,实际上你会打破递归限制和错误。但不管怎样,这都是个问题。)