Python面向对象编程:从基础到高级应用
1. 慎用 super 函数
在Python编程中, super
函数对于许多人来说,似乎是一个晦涩的解决方案,尤其是在实际Python代码中使用场景较为罕见。由于存在这些缺点,建议直接通过显式名称调用超类,特别是对于新手而言。在掌握更简单、更传统且更符合 “Pythonic” 风格的实现相同目标的方法之后,再考虑使用 super
函数。
对于Java程序员,建议在深入研究 super
函数的微妙含义之前,克制使用它的冲动。因为在多重继承的情况下, super
函数调用的类可能并非预期的超类,而且可能会因上下文而异,就像一盒巧克力,你永远不知道会得到什么。
2. 多态的实际应用
为了更直观地展示继承行为,我们可以在代码末尾添加以下代码:
if __name__ == '__main__':
...
print('--All three--')
for obj in (bob, sue, tom): # 通用处理对象
obj.giveRaise(.10) # 运行对象的 giveRaise 方法
print(obj) # 运行通用的 __repr__ 方法
运行上述代码,会得到如下输出: