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
中的语法吗?
答案 0 :(得分:7)
我有什么理由不能使用
Baz
中的语法吗?
是的,您不应该使用该语法。如果您从Baz
继承,super()
调用将解析为{{1并且你将陷入无限循环。这也适用于语法Baz.whee()
。
(好吧,实际上你会将递归限制和错误排除在外。但不管怎样,这都是一个问题。)