返回介绍

修改可变的类属性也可能产生副作用

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

这个陷阱其实只是前面的陷阱的扩展。由于类属性由所有实例共享,所以如果一个类属性引用一个可变对象,那么从任何实例来原处修改该对象都会立刻影响到所有实例:

这个效果与我们在本书中已经见到过的很多效果没有区别:可变对象通过简单变量来共享,全局变量由函数共享,模块级的对象由多个导入者共享,可变的函数参数由调用者和被调用者共享。所有这些都是通用行为的例子,并且如果从任何引用原处修改共享的对象的话,对一个可变对象的多个引用都将受到影响。在这里,这通过继承发生于所有实例所共享的类属性中,但是,这也是同样的现象在发挥作用。通过对实例属性自身的赋值的不同行为,这可能会更含蓄地发生:

但是,再一次说明,这不是一个问题,它只是需要注意的事情;共享的可变类属性在Python程序中可能有很多有效的用途。

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

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

发布评论

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