Приступая к скорости обучения. Я читал, что конструктор (def init в Python) должен устанавливать только назначенные переменные, которые вычисляемые атрибуты экземпляра должны быть установлены через свойство. Кроме того, использование @property предпочтительнее для getter/setter в стиле Java.Python - несколько операторов @property в определении класса?
ОК, но каждый пример, который я когда-либо видел, устанавливает только одно свойство. Предположим, у меня есть объект с тремя сложными атрибутами, которые нужно вычислить, спросить и т. Д. Как вы представляете несколько получателей, сеттеров, удалителей @property? Вот пример из другого post:
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
Так что, если у меня было три переменные экземпляра, которые были рассчитаны значения на основе некоторых других атрибутов, это будет выглядеть как этот
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
@property
def y(self):
"""I'm the 'y' property."""
return self._y
@y.setter
def y(self, value):
self._y = value
@y.deleter
def y(self):
del self._y
@property
def z(self):
"""I'm the 'z' property."""
return self._z
@z.setter
def z(self, value):
self._z = value
@z.deleter
def z(self):
del self._z
Или тот факт, что я только когда-либо увидеть одно заявление @property означает, что наличие класса с более чем одним @property - плохая идея?
Спасибо за помощь всем - у меня много отличных отзывов! –