返回介绍

Python 中基于委托的类:__getattr__ 和内置函数

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

我们在第2 7章的类教程和第3 0章的委托介绍中简单地遇到过这个问题:使用__getattr__运算符重载方法来把属性获取委托给包装的对象的类,在Python 3.0中将失效,除非运算符重载方法在包装类中重新定义了。在Python 3.0(和Python 2.6中,当使用新式类的时候),内置操作没有导向到通用的属性拦截方法,从而隐式地获取运算符重载方法的名称。例如,打印所使用的__str__方法,不会调用__getattr__。相反,Python 3.0在类中查找这样的名字,并且完全略过常规的运行时实例查找机制。为了解决这一点,这样的方法必须在包装类中重定义,要么手动,要么使用工具,或者在超类中重新定义。我们将在第37章和第38章中回顾这一陷阱。

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

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

发布评论

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