Jas*_*n S 4 python class-hierarchy python-2.7
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
Run Code Online (Sandbox Code Playgroud)
双方Bar并Baz返回相同的结果whee().我习惯了语法Bar.有什么理由我不应该使用语法Baz吗?
有什么理由我不应该使用语法
Baz吗?
是的,有一个原因你不应该使用这种语法. 如果您是子类Baz,则super()调用将解析回来Baz.whee(),您将陷入无限循环.这也适用于语法super(type(self), self).whee().
(好吧,实际上你会破坏递归限制和错误.但无论哪种方式都是一个问题.)