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

BarBaz都返回了whee()的相同结果。我习惯了Bar中的语法。有什么理由不使用Baz中的语法吗?

最佳答案

有什么理由不使用Baz中的语法吗?
是的,你不应该使用这种语法是有原因的。如果从Baz进行子类划分,super()调用将解析回Baz.whee()并陷入无限循环。这也适用于语法super(type(self), self).whee()
(好吧,实际上你会打破递归限制和错误。但不管怎样,这都是个问题。)

10-06 00:53