如何解决@property不能保护列表属性不被覆盖
为防止覆盖类变量,通常的做法是“隐藏”底层存储self._data
后面的数据,并公开@property
方法以返回数据。但是,这不适用于列表:您无法覆盖整个对象(好的),但是[:]
访问条目,而@property
保护无效。
class Test:
def __init__(self):
self._data = [0,1,2]
@property
def data(self):
return self._data
obj = test()
print(obj.data)
# obj.data = [99] # `AttributeError: can't set attribute` -- Good.
obj.data[:] = [99] # Yikes!
print(obj.data)
[0,2]
[99]
有什么主意如何防止覆盖?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。