Properties is a class for managing class attributes in Python. Property( )is a built-in function that creates and returns a property object
attribute_name =property(get_Attribute, set_Attribute, del_Attribute(Optional), doc_Attribue(Optional))
where, get_Attritube is function to get value of the attribute,
set_Attribute is function to set value of the attribute,
del_Attribute is function to delete the attribute and
doc_Attribute is a string (like a comment).
class Celsius:def __init__(self, temperature = 0): self.temperature = temperature def fahrenheit(self): return (self.temperature * 1.8) + 32 def get_temperature(self): print("Getting value") return self._temperature def set_temperature(self, value): print("Setting value") self._temperature = value temperature = property(get_temperature,set_temperature)
Here temperature is the property object. property attaches code (get_temperature and set_temperature) to the attribute (temperature). Any code that retrieves the value of temperature will automatically call get_temperature( ). Similarly, any code that assigns a value to temperature will automatically call set_temperature( ).
>>>c = Celsius( )
Here set_temperature( ) was called even when we created an object. The reason is that when an object is created, __init__ method gets called. This method has the line self.temperature = temperature. This assignment called set_temperature( ).
c.temperature calls get_temperature()
The actual temperature value is stored in the private variable temperature. The attribute temperature is a property object which provides interface to this private variable.
We can use the property with decorators also, Here we are not defining names get_temperature and set_temperature to pollute the class namespace. For this, we reuse the name temperature while defining our getter and setter functions. we can re-write the above example:
class Celsius:def __init__(self, temperature = 0): self.temperature = temperature def fahrenheit(self): return (self.temperature * 1.8) + 32 @property def temperature(self): print("Getting value") return self._temperature @temperature.setter def temperature(self, value): print("Setting value") self._temperature = value
Micropyramid is a software development and cloud consulting partner for enterprise businesses across the world. We work on python, Django, Salesforce, Angular, Reactjs, React Native, MySQL, PostgreSQL, Docker, Linux, Ansible, git, amazon web services. We are Amazon and salesforce consulting partner with 5 years of cloud architect experience. We develop e-commerce, retail, banking, machine learning, CMS, CRM web and mobile applications.
Django-CRM :Customer relationship management based on Django
Django-blog-it : django blog with complete customization and ready to use with one click installer Edit
Django-webpacker : A django compressor tool
Django-MFA : Multi Factor Authentication
Docker-box : Web Interface to manage full blown docker containers and imagesMore...