
为什么修改类属性__slots__影响实例?
你提供的代码中出现了以下问题:
class Person:
__slots__ = ("name")
def __init__(self):
self.name=13
shili=Person()
print(shili.name)
# Person.name = 143
print(id(shili.name),id(Person.name))
Person.name = 143
print(id(shili.name),id(Person.name))
shili.name=13当你修改类属性 person.name 时,即使实例 shili 已经有了 name 属性,它也受到影响。这是因为:
所以,当你修改 person.name 时,即使 shili 已经有了 name 属性,它也会受影响,因为它实际上访问的是共享的类属性。而当你给 shili.name 重新赋值一个值时,相当于创建了一个新的实例属性,覆盖了类属性。
立即学习“Python免费学习笔记(深入)”;
以上就是Python中__slots__如何影响实例属性的访问和修改?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号