python - 为什么在 python 中使用 getter/setter

标签 python

我偶然发现了下面在另一个问题中使用 getter 和 setter 的示例 Preferred way of defining properties in Python: property decorator or lambda?

由于Python有隐式的getter和setter,我想知道为什么要显式定义它们,如下所示。这些示例是否有任何优点,或者只有当 getter/setter 涉及比下面的简化示例更复杂的内容时才有意义?

class Bla(object):
    def sneaky():
        def fget(self):
            return self._sneaky
         def fset(self, value):
            self._sneaky = value
        return locals()
    sneaky = property(**sneaky())

Python 的最新版本增强了装饰器方法:

class Bla(object):
    @property
    def elegant(self):
        return self._elegant

    @elegant.setter
    def elegant(self, value):
         self._elegant = value

最佳答案

通常您应该只使用属性访问。如果 getter 和 setter 只是增加开销,那么它们就毫无意义

Python 将 getter 和 setter 与属性联系起来的好处是,您可以轻松地将属性更改为属性,而无需重构所有使用该类的代码。

关于python - 为什么在 python 中使用 getter/setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21471359/

相关文章:

python - 在两个 Pandas 时间序列中查找具有相同值的日期

python - 如何将巨大的二进制数据转换为ASCII格式?

python - 无法在 Azure - web.config 上部署基本 Python 3.6?

Python 自身类型错误 : add_state() takes exactly 4 arguments (3 given)

Python win32com : Excel set chart type to Line

python - 创建具有固定颜色的三 channel 图像的最佳方法?

python - key下的matplotlib图例标签?

python - 将字典列表中的两个列表合并为一个

python - 在 Python 中逐行组合多个文本文件

python - 解析字符串并分配给同一个变量?