python 我什么时候不应该使用属性

标签 python properties

我一直在学习替代 getter 和 setter 的 @property 装饰器。很多人似乎更喜欢使用 @property 而不是 getter 和 setter。

无论哪一种是可取的,大多数时候都需要它们吗?我觉得为所有内部变量使用@property 是不必要的或矫枉过正,尤其是当变量像下面这样简单时。简单的事情如果有效,难道不应该保持简单吗?

class Ex():
    def __init__(self, value):
        self.__x = value

    @property
    def x(self):
        return self.__x
    @x.setter
    def x(self, value):
        self.__x = value

我也不认为@property 提供额外的安全性(如果需要的话),因为有意图的人仍然可以访问该变量。 (._Ex__x)

为什么要使用@property(当不需要验证和 future 的更改时)以及什么时候不应该使用它们?

最佳答案

PEP 8 , Python 代码风格指南 说:

For simple public data attributes, it is best to expose just the attribute name, without complicated accessor/mutator methods.

如您所示,没有附加逻辑的属性与使用简单属性相比没有任何优势。

关于python 我什么时候不应该使用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55082258/

相关文章:

java - 在 JVM 启动时从 .jar 中的 .properties 文件设置属性

python - 在 Windows 上以非侵入方式解锁文件

python - MatplotLib (TKinter) + OpenCV 在 Python 3 中崩溃

c# - C# expression-bodied 成员的 method 属性

node.js - node-config 如何动态设置属性

JavaScript:动态生成的对象键

Python 按频率对文件进行排序

python - PyQt5 将小部件大小设置为最小并修复

python - 类中的所有变量都必须在初始化时创建吗

java - 如何从 Java EE Web 应用程序访问属性文件?