返回介绍

类的最终形式

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

现在,要在类中使用这一通用工具,所需要做的只是从其模块导入它,使用继承将其混合到顶层类中,并且删除掉我们之前编写的更专门的__str__方法。新的打印重载方法将会由Person的实例继承,Manager的实例也会继承;Manager从Person继承__str__,现在,Person从另一个模块的AttrDisplay获取它。下面是经过这些修改后的person.py文件的最终版本:

在最后的版本中,我们添加了一些新的注释来记录所做的工作和每个最佳实践惯例——使用了功能性描述的文档字符串和用于简短注释的#。现在运行这段代码,将会看到对象的所有属性,而不只是在最初的__str__中直接编码的那些属性。并且,我们最终的问题也解决了:由于AttrDisplay直接从self实例中提取了类名,所以每个对象都显示其最近的(最低的)类的名称——tom现在显示为Manager,而不是Person。并且我们最终验证了其工作名称已经由Manager的构造函数正确地填充了:

这正是我们所追求的更有用的显示。从更大的角度来看,我们的属性显示类已经变成了一个通用工具,可以通过继承将其混合到任何类中,从而利用它所定义的显示格式。此外,其所有客户都将自动获取我们工具中未来的修改。在本书稍后,我们将遇到甚至更加强大的类工具概念,例如,装饰器和元类。配合Python的内省工具,它们允许我们编写代码,从而以结构化的和可维护的方式来扩展和管理类。

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

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

发布评论

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