Подтвердить что ты не робот

Pycharm (@property) и (@x.setter) автогенерация

Интересно, есть ли способ использования Pycharm для автоматического генерации getter (@property) или setter для всех моих переменных в классе.

Если есть способ, может кто-нибудь указать на это?


спасибо! На самом деле я хотел автоматически генерировать (@property) и (@x.setter).

4b9b3361

Ответ 1

Нет способа сделать это. Вы можете извлекать определенные части кода, но вы не можете заставить pycharm генерировать getters и сеттеры для вас. Также нет необходимости, поскольку все переменные являются общедоступными, а значения _var, хотя и рассматриваются как частные переменные, также могут быть изменены.

ИЗМЕНИТЬ (Изменить вопрос):

Если вы хотите писать меньше кода при создании геттеров и сеттеров, просто используйте фрагмент props или propsd в PyCharm.

Ответ 2

Нет необходимости в этом. Пункт геттеров и сеттеров

  • ограничение доступа (например, создание sth только для чтения)
  • maintaing API (чтобы вы могли изменять базовые поля или добавлять некоторую обработку).

Первый не может быть достигнут в Python, а второй может быть без использования геттеров и сеттеров везде.

Если у вас

class Person(object):

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

и решил вместо name и surname добавить

    @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.