python property decorator

18,407

It's simply syntactic sugar. It allows a method call to look like a variable access or assignment.

One way this can be useful is if you want to change something that previously was a simple variable to something that's actually computed or validated with other code. If you make it a property, you can do this without breaking any existing code. Another way is for caching, lazy initialization, etc., of object attributes.

Share:
18,407

Related videos on Youtube

letter Q
Author by

letter Q

Updated on October 20, 2022

Comments

  • letter Q
    letter Q over 1 year

    Possible Duplicate:
    Real world example about how to use property feature in python?

    I have a question about the decorator @property that I've seen in the following code. Could someone be kind enough to completely explain why someone would use the @property decorator? I know @property is equivalent to isActive = property(isActive) but what does the method property actually do to it's parameter? If I were to call the isActive method from the InputCell class what would actually happen? Thanks in advance.

    class InputCell(object):
        def __init__(self, ix, iy, inputData):
            self.ix = ix
            self.iy = iy
            self.InputData = inputData
    
        @property
        def isActive(self):
            return self.InputData[self.ix][self.iy]
    
    • Montre
      Montre
      The documentation for the decorator actually explains this in the third sentence: docs.python.org/py3k/library/…
    • Russell Borogove
      Russell Borogove
      A @property is used to make a function look like an attribute. You can use this to make sure certain operations are carried out whenever a property is accessed. For example, if you have a ton of code that uses an angle parameter expressed in degrees, then later decide that internally you want to track the angle in radians, you can create property methods that hide the fact that radians are in use internally.