我一直在学习替代 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/