pycharm中的功能,可为每个属性(字段)生成自动设置器和获取器功能,并生成自动承包商

时间:2018-07-29 08:19:11

标签: pycharm

我正在寻找pycharm中的功能,该功能为每个属性(字段)生成自动setter和getter函数并生成自动承包商。

例如,

class A:
  def __init__(self, a, b, c, d):
      self._a = a
      self._b = b
      self._c = c
      self._d = d
  def set(self, a):
      self._a = a
  def get(self, a):
      return a

1 个答案:

答案 0 :(得分:1)

这是一个古老的问题,但是,我遇到了这个问题,希望对以后的访问者有所帮助。

PyCharm具有可为此类事情配置的实时模板。但是...

在PyCharm中这可能不存在,因为不认为getter和setter是Pythonic的,也不是Python处理类的方式。对于那些来自C ++,Java或PHP等语言的人来说,这是一个普遍的误解。

Python的实现方法是通过Properties。 See this SO question

class A:
    def __init__(a):
        self._a = a

    @property
    def a(self):
        return self._a

    @a.setter
    def a(self, val):
        self._a = val

    @a.deleter
    def a(self):
        self._a = None

要访问:

obj = A(12)
obj.a            # 12
obj.a = 13
obj.a            # 13
del obj.a
obj.a # None

如果要将PyCharm用于属性获取器/设置器/删除器,则有一种简单的方法。

  

prop + TAB

将为您提供属性获取器,您可以在其中输入名称

  

道具+ TAB

将为您提供属性设置器和获取器,您可以在其中键入名称

  

propsd + TAB

将为您提供一个属性设置器/获取器和删除器,您可以在其中键入名称

希望这会有所帮助。