返回介绍

多态的作用

发布于 2024-01-29 22:24:15 字数 765 浏览 0 评论 0 收藏 0

为了使得这个从继承获取的行为更加惊人,我们在文件的末尾添加了如下代码:

输出结果如下所示:

在添加的代码中,对象是一个Person或Manager,Python自动运行相应的giveRaise——针对bob和sue使用Person中最初的版本,针对tom使用Manager中定制的版本。请自己跟踪方法调用,看看Python如何为每个对象选择正确的giveRaise方法。

这只不过是Python中所谓的多态,我们在本书前面介绍过,现在再次遇到,giveRaise具体做什么取决于你对它做什么。这里,它从我们已经在类中编写的代码中选取,从而让一切变得明朗。代码中实际的效果是,sue加薪10%而tom加薪20%,因为giveRaise根据对象的类型来分派。正如我们所知道的,多态是Python灵活性的核心。例如,把3个对象中的任何一个传递给调用了giveRaise方法的一个函数,将会有同样的效果:根据所传递的对象的类型,将会自动运行相应的版本。

另一方面,对于3个对象,打印都运行相同的__str__,因为其代码在Person中只出现一次。Manager既应用最初在Person中编写的代码,也对这些代码进行特殊化。尽管这个例子很小,我们已经利用OOP的特性实现了代码定制和复用。有了类,这些事情有时候会自动进行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文