Zone Of Makos

Menu icon

Property in Python

In Python, a property is a special kind of attribute that is accessed like a regular attribute, but whose value is computed dynamically at runtime. Properties are a way to provide controlled access to an object's attributes, and can be used to enforce data validation, perform calculations, or trigger side effects when a value is set. In this lesson, we'll explore how to use properties in Python and how they can help you write more robust and maintainable code.

Using Properties in Python

In Python, you can define a property by using the built-in @property decorator. This decorator defines a getter method for the property, which is called whenever the property is accessed. You can also define a setter method for the property using the @property_name.setter decorator, which is called whenever the property is set.


class MyClass:
    def __init__(self):
        self._my_property = None

    @property
    def my_property(self):
        print("Getting my_property")
        return self._my_property

    @my_property.setter
    def my_property(self, value):
        print("Setting my_property")
        self._my_property = value

my_object = MyClass()
my_object.my_property = "Hello, World!"
print(my_object.my_property)

# Output:
# Setting my_property
# Getting my_property
# Hello, World!

Using Properties for Validation

One common use of properties in Python is to perform data validation. By using a setter method, you can validate the value being set and raise an error if it doesn't meet certain criteria.


class Person:
    def __init__(self, name):
        self._name = None
        self.name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if not isinstance(value, str):
            raise TypeError("Name must be a string")
        self._name = value

person = Person(42)
# This will raise a TypeError because the name must be a string

Conclusion

Properties are a powerful feature of Python that allow you to provide controlled access to an object's attributes. By using properties, you can enforce data validation, perform calculations, or trigger side effects when a value is set. In Python, you can define a property by using the @property and @property_name.setter decorators. Properties are an essential part of writing clean and maintainable code, and they can help you avoid many common programming errors.