@property cho phép define getter/setter/deleter cho attribute, truy cập như attribute thường nhưng có validation logic.
python
class Temperature:
def __init__(self, celsius: float):
self._celsius = celsius
@property
def celsius(self) -> float:
return self._celsius
@celsius.setter
def celsius(self, value: float):
if value < -273.15:
raise ValueError("Below absolute zero!")
self._celsius = value
@property
def fahrenheit(self) -> float: # Read-only derived property
return self._celsius * 9/5 + 32
t = Temperature(25)
t.celsius = 30 # Gọi setter tự động
print(t.fahrenheit) # 86.0