Свойства против общего сеттера/геттера и дескриптораPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Свойства против общего сеттера/геттера и дескриптора

Сообщение Anonymous »

Я не могу найти окончательный ответ по этому вопросу, и я думаю, что причина в том, что это зависит от ситуации. < /p>
a, b и c (и d, e , f ... так как только 3 атрибута перечислены в этом примере для целей простоты, что, вероятно, говорит, что подход неверен, если класс нуждается в том, что многие атрибуты) являются разными атрибутами, но имеют некоторые сходства, что, вероятно, означает, что их разделение на других Классы были бы лучшим выбором. Или другой подход (например, группировка аналогичных атрибутов в отдельных классах) будет лучше? Как это выглядело, если, скажем, B и C являются тем же «видом» атрибута? (например, B является входным путем, а C - выходной путь). < /p>
Несколько декораторов и сеттеров свойств: < /p>

Код: Выделить всё

class A:  # Too many properties and setters?

def __init__(self, a, b, c):
self._a = a
self._b = b
self._c = c

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

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

@property
def b(self):
return self._b

@b.setter
def b(self, value):
self._b = b

...  # (same for c)
или несколько сеттеров/Getters с «частными» атрибутами:

Код: Выделить всё

class A:  # Name mangling issues?

def __init__(self, a, b, c):
self.__a = a
self.__b = b
self.__c = c

def set_a(self, a):
self.__a = a

def get_a(self):
return self.__a

def set_b(self, b):
self.__b = b

def get_b(self):
return self.__b

...  # (same for c)
или общие сеттеры/eTegters:
class A: # Less cluttered, but less intuitive that attributes are meant to be "private"?

def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c

def __getattr__(self, name: str):
return self.__dict__[f"_{name}"]

def __setattr__(self, name, value):
self.__dict__[f"_{name}"] = value
< /code>
или дескриптор Python? (Как это было бы похоже, если бы B и C были перемещены в отдельный класс, поскольку они имеют сходство?).
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/794 ... descriptor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»