property
). class Mine(object):
def __init__(self):
self._x = None
def get_x(self):
return self._x
def set_x(self, value):
self._x = value
def del_x(self):
self._x = 'No more'
x = property(get_x, set_x, del_x, 'Это свойство x.')
type(Mine.x) # property
mine = Mine()
mine.x # None
mine.x = 3
mine.x # 3
del mine.x
mine.x # No more
class Mine(object):
def __init__(self):
self._x = 'some value'
@property
def prop(self):
return self._x
mine = Mine()
mine.prop # some value
mine.prop = 'other value' # AttributeError
del mine.prop # AttributeError
getter
, setter
, deleter
, которые можно использовать в качестве декораторов для указания функций реализующих получение, установку и удаление свойства соответственно. Следующий код эквивалентен коду из первого примера: class Mine(object):
def __init__(self):
self._x = None
x = property()
@x.getter
def x(self):
"""Это свойство x."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
self._x = 'No more'
Если у вас есть, что сказать, можете представиться и исправить ситуацию.