В Python у меня есть следующий примерный класс:
class Foo:
self._attr = 0
@property
def attr(self):
return self._attr
@attr.setter
def attr(self, value):
self._attr = value
@attr.deleter
def attr(self):
del self._attr
Как вы можете видеть, у меня есть простой атрибут "private" "_attr" и свойство для доступа к нему. Существует много кодов для объявления простого частного атрибута, и я думаю, что он не соблюдает философию "KISS", чтобы объявить все атрибуты, подобные этому.
Итак, почему бы не объявить все мои атрибуты как общедоступные атрибуты, если мне не нужен конкретный getter/setter/deleter?
Отвечаю: Потому что принцип инкапсуляции (ООП) говорит иначе!
Каков наилучший способ?