gpt4 book ai didi

python - 通过属性与通过文档的只读属性

转载 作者:行者123 更新时间:2023-11-28 17:35:53 24 4
gpt4 key购买 nike

在 Python 中,我正在编写一个类,其中一些属性必须在对象生命周期内保持不变。

一种方法是使用属性:

class Foo:
def __init__(self, x, y):
'''Create a Foo object

x -- list of int (READ-ONLY)
y -- float
'''
# Save x and y and ensure they are int
self._x = [int(xx) for xx in x]
self.y = float(y)

@property
def x(self):
# Return a copy of self._x to prevent accidental modification
return self._x.copy()

这被认为是一种好的做法吗?我应该只依靠文档来展示哪些属性是可写的,哪些不是?还有其他建议吗?

最佳答案

首先请注意,几乎没有技术方法可以阻止某人访问您的对象的实现并在他真的想要时修改它。

现在写/你的问题/例子:

  • 使用实现属性 (_x) 和只读属性使意图非常明确

  • 如果您的列表真的应该是不可变的,请改用 tuple()。它在语义上值得商榷(tuple 用于基于位置的记录 - 考虑关系数据库记录等 - 不是不可变列表),但要确保它是不可变的并且避免必须复制。

  • 您仍然确实想要清楚地记录此属性应该在实例的生命周期内“保持不变”。

关于python - 通过属性与通过文档的只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30619348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com