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

2024-04-23 18:04:36 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

没有必要。获得者和设定者的重点是

  • 限制访问(如使某物只读)
  • 维护API(以便您可以更改底层字段或添加一些处理)。

第一种方法不能在Python中实现,第二种方法可以不在任何地方使用getter和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。

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

编辑(有问题的更改):

如果您想在生成getter和setter时编写更少的代码,那么只需使用PyCharm中的propspropsd片段。

仅仅因为Paython不强制私人成员,并不意味着你必须没有它。

PyCharm不提供为所有私人成员创建属性的菜单,但它有一个实时模板:

在类中(缩进必须正确)键入prop并按enter键。将显示只读属性的存根。

我采用了我的live模板来轻松生成getter类属性: 打开设置(Ctrl+Alt+S)->;编辑器->;活动模板->;Python->;道具

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

读写访问的live模板props也一样:

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

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

相关问题 更多 >