gpt4 book ai didi

python - 使用 @property 与 getter 和 setter

转载 作者:IT老高 更新时间:2023-10-28 11:59:43 35 4
gpt4 key购买 nike

@property 表示法与经典的 getter+setter 相比有什么优势?程序员应该在哪些特定情况/情况下选择使用其中一种?

带属性:

class MyClass(object):
@property
def my_attr(self):
return self._my_attr

@my_attr.setter
def my_attr(self, value):
self._my_attr = value

没有属性:

class MyClass(object):
def get_my_attr(self):
return self._my_attr

def set_my_attr(self, value):
self._my_attr = value

最佳答案

首选属性。这就是他们的目的。

原因是所有属性在 Python 中都是公共(public)的。以一个或两个下划线开头的名称只是一个警告,即给定的属性是一个实现细节,在未来的代码版本中可能不会保持不变。它不会阻止您实际获取或设置该属性。因此,标准属性访问是访问属性的正常 Python 方式。

属性的优点是它们在语法上与属性访问相同,因此您可以在不更改客户端代码的情况下从一个更改为另一个。您甚至可以拥有一个使用属性的类版本(例如,用于按契约(Contract)代码或调试)和一个不用于生产的版本,而无需更改使用它的代码。同时,您不必为所有内容编写 getter 和 setter,以防万一您以后可能需要更好地控制访问。

关于python - 使用 @property 与 getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6618002/

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