Pycharm (@属性) 和 (@x.setter) 自动生成

Pycharm (@property) and (@x.setter) autogeneration

我想知道是否有某种方法可以使用 Pycharm 为 [=21] 中的所有变量自动生成 getter(@属性) 或 setter =].

如果有方法,谁能指出来吗?


谢谢!其实我的意思是自动生成 (@属性) 和 (@x.setter).

没有办法这样做。您可以提取代码的某些部分,但不能让 pycharm 为您生成 getter 和 setter。也没有必要,因为所有变量都是 public,并且 _var 值,即使被视为私有变量也可以更改。

编辑(有问题的更改):

如果你想在制作 getter 和 setter 时写更少的代码,那么只需使用 props 或 PyCharm 中的 propsd 片段。

没有这个必要。 getters 和 setters 的点是

  • 限制访问(比如将某事设为只读)
  • 维护 API(以便您可以更改基础字段或添加一些处理)。

第一个无法在 Python 中实现,第二个可以不使用吸气剂和 setter 无处不在。

如果你有

class Person(object):

    def ___init__(self, full_name):
        self.full_name = full_name

并决定改用 namesurname,然后您可以添加

    @property
    def full_name(self):
        return self.name + " " + self.surname

    @full_name.setter
    def full_name(self, value):
        self.name, self.surname = value.split()

不破坏 API.

仅仅因为 Python 不强制执行私有成员并不意味着您必须没有它们。但请注意,getters 和 setter 是函数调用,比直接成员访问要慢得多。

PyCharm 不提供为所有私有成员创建属性的菜单,但它有一个实时模板:在你的 class(缩进必须正确)中键入 prop 并按进入。只读 属性 的存根将出现。

我采用了我的实时模板来轻松生成 getter,例如 属性: 打开设置 (Ctrl+Alt+S) -> 编辑器 -> 实时模板 -> Python -> prop

@property
def $NAME$(self):
    return self.__$NAME$

实时模板相同props 读写访问:

@property
def $NAME$(self) -> $TYPE$:
    return self.__$NAME$

@$NAME$.setter
def $NAME$(self, $NAME$: $TYPE$):
    self.__$NAME$ = $NAME$