- class Color(object):
- def __init__(self, name):
- self.__name = name
- @property
- def name(self):
- return self.__name
- @name.setter
- def name(self, value):
- self.__name = value
- @name.deleter
- def name(self):
- self.__name = None
- c = Color('Red')
- print c.name
- c.name = 'Blue'
- print c.name
- del c.name
- print c.name
- # Red
- # Blue
- # None
Использовать @property чтобы запретить изменение свойства объекта.
- class Color(object):
- def __init__(self, name):
- self.__name = name
- @property
- def name(self):
- return 'Color is %s' % self.__name
- c = Color('Red')
- print c.name # Color is Red
- # с возможностью только читать данные
- c.name = 'Green' # AttributeError: can't set attribute
Устаревший подход к использованию property.
- property(getf=None, setf=None, delf=None)
- class Color(object):
- def __init__(self, name):
- self.__name = name
- def getname(self):
- return 'Color is %s' % self.__name
- name = property(getname)
- c = Color('Red')
- print c.name # Color is Red
- ООП в Python
* Python программирование для новичков