> For the complete documentation index, see [llms.txt](https://theshank.gitbook.io/ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://theshank.gitbook.io/ai/python-tricks-and-tips/concepts.md).

# Decorators

## @property

Makes a function works like some variable.&#x20;

```python
class House():

@property
def temperature(self):
    return self._temperature*10

@temperature.setter
def temperature(self, temp):
    self._temprature = some_func(temp)
    
#use this as

house = House()
temp = house.temperature
house.temperature = 50.0
```

{% embed url="<https://www.programiz.com/python-programming/property>" %}

{% embed url="<https://www.freecodecamp.org/news/python-property-decorator/>" %}

## @classmethod and @staticmethod

```python
# Python program to demonstrate  
# use of a class method and static method. 
from datetime import date 
  
class Person: 
    def __init__(self, name, age): 
        self.name = name 
        self.age = age 
      
    # a class method to create a  
    # Person object by birth year. 
    @classmethod
    def fromBirthYear(cls, name, year): 
        return cls(name, date.today().year - year) 
      
    # a static method to check if a 
    # Person is adult or not. 
    @staticmethod
    def isAdult(age): 
        return age > 18
  
person1 = Person('mayank', 21) 
person2 = Person.fromBirthYear('mayank', 1996) 
  
print (person1.age) 
print (person2.age) 
  
# print the result 
print (Person.isAdult(22)) 
```

See how you can create class instance through some other logic using `@classmethod.`

{% embed url="<https://stackabuse.com/pythons-classmethod-and-staticmethod-explained/>" %}
