代码之家  ›  专栏  ›  技术社区  ›  Oleksandr Novik

Python获取和设置方法与@property decorator

  •  0
  • Oleksandr Novik  · 技术社区  · 3 年前

    我正在探索Python中的装饰器,作为一个从其他语言来到Python的人,我对 @property 及其 @xxx.setter 兄弟在Java和C语言中++ get_xxx() set_xxx() 通常是组织封装的方式。在Python中,我们有这两个装饰器,它们需要特定的语法和名称匹配才能工作 所有物 get-set 方法?

    我已经检查过了 this post 但是,的优点是什么 所有物 除了的可用性 += 操作人员

    0 回复  |  直到 3 年前
        1
  •  2
  •   jsbueno    3 年前

    使用的最佳部分 property 对于一个属性是 你不需要它 .

    Python的原理是类、属性和方法都是公共的,但按照惯例——当你在它们的名称前面加一个“_”

    “属性”背后的机制,描述符协议,允许人们将以前的哑纯属性更改为插入属性,如果系统发展到需要的情况,则由getter和setter的代码保护。

    但默认情况下 name 属性,只是一个普通的属性。你知道 person.name = "Name" -不需要防护装置,不需要也不推荐设置方法。当需要保护时(例如,将名称大写,或过滤不正确的单词),无论代码使用该属性,都不需要更改:使用property,属性分配仍然使用“=”运算符进行。

    除此之外,如果使用“=”看起来并不比 person.set_name("Name") 对你来说,我想对大多数人来说都是这样。当然,这是主观的。